https://leetcode-cn.com/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/
//DFS 递归//使用visited数组保存已访问的地址class Solution {boolean [][] visited;public int movingCount(int m, int n, int k) {int res = 0;int i = 0, j= 0;visited = new boolean[m][n];return DFS(i,j,m,n,k);}int DFS(int i, int j, int m, int n, int k){if( i < 0 || j< 0 || i >=m || j >= n ||visited[i][j] == true) return 0;if((sum(i) + sum(j)) > k) return 0;visited[i][j] = true;return 1+DFS(i+1,j,m,n,k)+DFS(i,j+1,m,n,k);}boolean judge(int i, int j, int k){if((sum(i)+sum(j) )> k) return false;else return true;}int sum(int num){int res = 0;while(num >0){res += num % 10;num /= 10;}return res;}}
错误代码
class Solution {public int movingCount(int m, int n, int k) {int res = 0;for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){if(judge(i,j,k) == true) {++res;System.out.println("i="+i+" j="+j);}}}return res;}boolean judge(int i, int j, int k){if((sum(i)+sum(j) )> k) return false;else return true;}int sum(int num){int res = 0;while(num >0){res += num % 10;num /= 10;}return res;}}
输入 16 8 4
错误原因(10, 0)等点是不可到达的
执行结果
i=0 j=0
i=0 j=1
i=0 j=2
i=0 j=3
i=0 j=4
i=1 j=0
i=1 j=1
i=1 j=2
i=1 j=3
i=2 j=0
i=2 j=1
i=2 j=2
i=3 j=0
i=3 j=1
i=4 j=0
i=10 j=0
i=10 j=1
i=10 j=2
i=10 j=3
i=11 j=0
i=11 j=1
i=11 j=2
i=12 j=0
i=12 j=1
i=13 j=0
25
