题目:13. 机器人的运动范围
思路: 借助一个辅助方法helper来判别二维方格的每个位置是否满足条件,如果满足则计数+1;
helper方法实现: 先判断位置是否越界,是否遍历过,数位和是否满足条件,不满足则返回;计数+1,递归遍历下一个位置;将该位置标记已经访问过; class Solution { //成员变量 int m , n , k , res; boolean[][] visited; public int movingCount(int m, int n, int k) { this.m = m; this.n = n; this.k = k; visited = new boolean[m][n]; res = 0; helper(0,0); return res; } public void helper(int i, int j){ if(!isArea(i,j) || visited[i][j] || !isOk(i,j)) { return; } res ++; helper(i + 1, j); helper(i, j+ 1); visited[i][j] = true; } public boolean isArea(int i, int j){ if(i < 0 || i >= m || j < 0 || j >= n){ return false; }else{ return true; } } public boolean isOk(int i, int j){ int ans = i % 10 + i / 10 + j % 10 + j /10; return ans <= k; } }