题目大意:输入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)
}
本文介绍了一道关于路径寻找的问题,使用广度优先搜索解决。输入k,m,n,求解在特定条件下最多能到达的格子数目。文章提供了完整的代码实现。
478

被折叠的 条评论
为什么被折叠?



