Leetcode——机器人的运动范围
Posted Yawn,
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode——机器人的运动范围相关的知识,希望对你有一定的参考价值。
1. 题目
2. 题解
- 通过sum函数计算位数和,然后就是普通的dfs遍历
class Solution {
int ans = 0;
int[][] direction = {{1,0}, {-1,0}, {0,1}, {0,-1}};
public int movingCount(int m, int n, int k) {
boolean[][] vis = new boolean[m][n];
dfs(m, n, vis, 0, 0, k);
return ans;
}
//求数位和
public int sums(int x){
int s = 0;
while(x != 0) {
s += x % 10;
x = x / 10;
}
return s;
}
public void dfs(int m, int n, boolean[][] vis, int x, int y, int k){
if(sums(x) + sums(y) > k)
return;
//标记已经走过该位置,ans加一
vis[x][y] = true;
ans++;
//四个方向遍历,找符合要求的坐标
for(int[] dir : direction){
int newX = x + dir[0];
int newY = y + dir[1];
if(newX >= 0 && newX < m && newY >= 0 && newY < n && !vis[newX][newY])
dfs(m, n, vis, newX, newY, k);
}
}
}
以上是关于Leetcode——机器人的运动范围的主要内容,如果未能解决你的问题,请参考以下文章