题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.on('line', function (line) { const nums = line.split(' ').map(Number); // 标记 let flag = false const dfs = (arr, curVal)=>{ // 大于24就没必要继续了 if(curVal > 24 ) return // 计算得到24了 就得到结果了 if(curVal === 24){ flag = true return } // 否则就遍历 for(let i = 0; i < arr.length; i++){ // 原数组不能改, 所以得赋值一下 const buf = arr.slice() // 下一次数组是去掉当前这一项,因为计算了这一项,则接下来,只有三个数可以操作 buf.splice(i,1) // 当时第一次计算时 if(curVal === 0){ dfs(buf ,arr[i]) }else { // 执行加减乘除 dfs(buf, curVal + arr[i]) dfs(buf, curVal - arr[i]) dfs(buf, curVal * arr[i]) dfs(buf, curVal / arr[i]) } } } dfs(nums, 0) console.log(flag) });