```java
class Solution {
//全局变量
int counts=0;
public int movingCount(int m, int n, int k) {
boolean[][] visit=new boolean[m][n];
check(0,0,m,n,visit,k);
return counts;
}
//dfs主体结构 注意不需要回溯
public void check(int i,int j,int m,int n,boolean[][] visit,int k){
if(i<m&&j<n&&!visit[i][j]&&(getNumericalDigit(i)+getNumericalDigit(j))<=k){
visit[i][j]=true;
counts++;
check(i+1,j,m,n,visit,k);
check(i,j+1,m,n,visit,k);
}
}
// 获取一个整数的数位和
private int getNumericalDigit(int num) {
int res = 0;
while (num > 0) {
res += num % 10;
num /= 10;
}
return res;
}
}