classSolution{publicintmovingCount(int m,int n,int k){if(k ==0){return1;}
Queue<int[]> queue =newLinkedList<int[]>();// 向右和向下的方向数组int[] dx ={0,1};int[] dy ={1,0};boolean[][] vis =newboolean[m][n];
queue.offer(newint[]{0,0});
vis[0][0]=true;int ans =1;while(!queue.isEmpty()){int[] cell = queue.poll();int x = cell[0], y = cell[1];for(int i =0; i <2;++i){int tx = dx[i]+ x;int ty = dy[i]+ y;if(tx <0|| tx >= m || ty <0|| ty >= n || vis[tx][ty]||get(tx)+get(ty)> k){continue;}
queue.offer(newint[]{tx, ty});
vis[tx][ty]=true;
ans++;}}return ans;}privateintget(int x){int res =0;while(x !=0){
res += x %10;
x /=10;}return res;}}