思路(深度优先搜索+回溯)
代码
var movingCount = function(m, n, k) {
var visited = new Array(m);
for(let i = 0; i < m; i++) {
visited[i] = new Array(n).fill(false);
}
var dfs = function(i, j,visited) {
var ii = i;
var jj = j;
var sum_of_dights = 0;
while(ii) {
sum_of_dights = sum_of_dights + (ii % 10);
ii = parseInt(ii / 10);
}
while(jj) {
sum_of_dights = sum_of_dights + (jj % 10);
jj = parseInt(jj /10);
}
if(i < 0 || i >= m || j < 0 || j >= n || sum_of_dights > k || visited[i][j]) {
return 0;
}
visited[i][j] = true;
return 1 + dfs(i + 1, j,visited) + dfs(i, j + 1,visited) + dfs(i - 1, j,visited) + dfs(i, j -1,visited);
}
return dfs(0, 0,visited);
};