class Solution { boolean[][] visited; int m,n,cnt; public int wardrobeFinishing(int m, int n, int cnt) { this.m=m;this.n=n;this.cnt=cnt; this.visited = new boolean[m][n]; return DFS(0,0); } public int digit(int i){ int res = 0; while(i>0){ res+=i%10; i/=10; } return res; } public int DFS(int i,int j){ if(i>=m||j>=n||visited[i][j]||digit(i)+digit(j)>cnt) return 0; visited[i][j]=true; return DFS(i+1,j)+DFS(i,j+1)+1; } }