classSolution{int m,n,cnt,ret;boolean[][] vis;//注意:自动回溯的不能标记int[] dx ={0,0,-1,1};int[] dy ={1,-1,0,0};publicintwardrobeFinishing(int _m,int _n,int _cnt){
m = _m; n = _n; cnt = _cnt;
vis =newboolean[m][n];dfs(0,0);return ret;}privatevoiddfs(int i,int j){
vis[i][j]=true;
ret++;for(int k =0; k <4; k++){int x = i + dx[k];int y = j + dy[k];if(x >=0&& x < m && y >=0&& y < n &&!vis[x][y]&&check(x,y)){dfs(x,y);}}}privatebooleancheck(int i,int j){int tmp =0;while(i !=0){
tmp += i %10;
i /=10;}while(j !=0){
tmp += j %10;
j /=10;}return tmp <= cnt;}}