class Solution {
public:
int res = 0;
int cal(int n){
int sum = 0;
while(n){
sum += (n%10);
n/=10;
}
return sum;
}
void dfs(int threshold, vector<vector<bool>>& visited, int i, int j, int rows, int cols){
if (i<0||i>=rows||j<0||j>=cols||visited[i][j]) return;
if (cal(i)+cal(j)>threshold) return;
res += 1;
visited[i][j] = true;
dfs(threshold, visited, i+1, j, rows, cols);
dfs(threshold, visited, i-1, j, rows, cols);
dfs(threshold, visited, i, j+1, rows, cols);
dfs(threshold, visited, i, j-1, rows, cols);
}
int movingCount(int threshold, int rows, int cols) {
vector<vector<bool>> visited(rows, vector<bool>(cols, false));
dfs(threshold, visited, 0, 0, rows, cols);
return res;
}
};