classSolution13{publicstaticvoidmain(String[] args){System.out.println(movingCount(2,3,1));}staticboolean[][] visited;publicstaticintmovingCount(int m,int n,int k){
visited =newboolean[m][n];returndfs(0,0, k, m, n);}privatestaticintdfs(int i,int j,int k,int m,int n){if(i >= m || j >= n ||getCountSum(i)+getCountSum(j)> k || visited[i][j]){return0;}
visited[i][j]=true;return1+dfs(i +1, j, k, m, n)+dfs(i, j +1, k, m, n);}privatestaticintgetCountSum(int num){int sum =0;while(num !=0){
sum += num %10;
num = num /10;}return sum;}}