题解 | #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)
});
查看28道真题和解析
