题解 | #机器人的运动范围#
机器人的运动范围
https://www.nowcoder.com/practice/6e5207314b5241fb83f2329e89fdecc8
function cal(nums){
var sum = 0
while(nums>0){
sum += parseInt(nums%10)
nums = parseInt(nums/10)
}
return sum
}
function dfs(r,c,threshold,rows,cols,isvisited){
if(r<0||r>rows-1||c<0||c>cols-1||isvisited[r][c]||cal(r)+cal(c)>threshold){
return 0
}
isvisited[r][c]=true;
return (1 + dfs(r-1,c,threshold,rows,cols,isvisited)
+ dfs(r+1,c,threshold,rows,cols,isvisited)
+ dfs(r,c-1,threshold,rows,cols,isvisited)
+ dfs(r,c+1,threshold,rows,cols,isvisited))
}
function movingCount(threshold, rows, cols)
{
if(rows<=0||cols<=0||threshold<0){
return 0
}
var isvisited = []
for(let i=0;i<rows;i++){
isvisited.push([])
for(let j=0;j<cols;j++){
isvisited[i][j]=false
}
}
return dfs(0,0,threshold,rows,cols,isvisited)
}
module.exports = {
movingCount : movingCount
};