题目大意:输入k, m, n
k表示一个阈值,如果行和列每个位上的数字之和大于k,这个格子就不能去,求最多能去的格子数
题目不难,但由于时间还有15分钟才看这题,加上紧张的因素,没写出来,难受呀!
广搜或者深搜都可以,我用的是广搜
function getAnswer(k, n, m) {
let ju = []
for(let i = 0; i < m; i ++) {
ju[i] = []
}
let he = (num)=>{
let ans = 0
while(num) {
ans += num % 10
num = Math.floor(num / 10)
}
return ans
}
let h = [-1, 0, 1, 0]
let l = [0, 1, 0, -1]
let stack = []
stack.push({
row: 0,
col: 0
})
let ans = 0
ju[0][0] = true
while(stack.length) {
ans ++;
let nowIndex = stack.shift()
for(let i = 0; i < 4; i ++) {
let newX = nowIndex.row + h[i]
let newY = nowIndex.col + l[i]
if(newX >= 0 && newX < m && newY >= 0 && newY < n && !ju[newX][newY] && he(newX) + he(newY) <= k) {
stack.push({
row: newX,
col: newY
})
ju[newX][newY] = true
}
}
}
console.log(ans)
}