题解 | #四则运算#

24点运算

http://www.nowcoder.com/practice/7e124483271e4c979a82eb2956544f9d

使用递归,很好实现,很好理解

const d = { 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, J: 11, Q: 12, K: 13, A: 1, 2: 2 }
const res = []
function f(nums, target) {
  if (nums.length == 1) {
    if (d[nums[0]] == target) {
      res.push(nums[0])
      return true
    } else {
      return false
    }
  }
  for (let i = 0; i < nums.length; i++) {
    const a = nums[i]
    const b = nums.slice(0, i).concat(nums.slice(i + 1))
    if (f(b, target + d[a])) {
      res.push('-' + a)
      return true
    } else if (f(b, target - d[a])) {
      res.push('+' + a)
      return true
    } else if (f(b, target * d[a])) {
      res.push('/' + a)
      return true
    } else if (target % d[a] === 0 && f(b, target / d[a])) {
      res.push('*' + a)
      return true
    }
  }
  return false
}
function get24(str) {
  var nums = str.split(' ')
  if (nums.includes('joker') || nums.includes('JOKER')) {
    console.log('ERROR')
  } else {
    if (f(nums, 24)) {
      console.log(res.join(''))
    } else {
      console.log('NONE')
    }
  }
}
get24(readline())
全部评论
不理解第15行到第26行,+-*/为啥和res中的符号都是反着的,这个哪位大神帮忙解答下啊
点赞 回复 分享
发布于 2022-07-07 16:12
除数是整除的时候是不是没有考虑啊
点赞 回复 分享
发布于 2022-12-24 15:53 广西

相关推荐

和蔼:在竞争中脱颖而出,厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了
点赞 评论 收藏
分享
3 收藏 评论
分享
牛客网
牛客企业服务