题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
let tokens = line.split(" ").map((item) => +item);
// console.log(tokens);
let colorList = new Array(tokens.length).fill(0);
function dfs(sum, count) {
if (count == 3) {
let fi = colorList.findIndex((item) => {
return item == 0;
});
return tokens[fi] == sum;
}
for (let i = 0; i < tokens.length; i++) {
if (colorList[i] == 1) {
continue;
}
let oList = [
sum + tokens[i],
sum - tokens[i],
sum * tokens[i],
sum / tokens[i],
];
for (let j = 0; j < oList.length; j++) {
let subSum=oList[j]
colorList[i] = 1;
valid = dfs(subSum, count + 1);
if (valid) {
return true;
}
colorList[i] = 0;
}
}
return false;
}
let res = dfs(24, 0);
console.log(res);
// tokens 4个元素 24 +- */
// 3个元素 sum */+- 24
// 24 */+- 4个结果 dfs(subSum,subList)==true
// 不能重复 +1 染色实现 0 1 color[0]=1
}
})();
#华为#
