面试题13
示例 1:
输入:m = 2, n = 3, k = 1
输出:3
示例 1:
输入:m = 3, n = 1, k = 0
输出:1提示:
Solutions
class Solution {
public:
int m, n;
vector<bool> visited;
inline int sum(int n) {
int s = 0;
while (n) {
s += n % 10; n /= 10;
}
return s;
}
int dfs(int i, int j, int k) {
if (i >= m || j >= n || visited[i * n + j] || sum(i) + sum(j) > k) return 0;
visited[i * n + j] = true;
return dfs(i + 1, j, k)
+ dfs(i, j + 1, k)
+ 1;
}
int movingCount(int m, int n, int k) {
this->m = m; this->n = n;
visited = vector<bool>(m * n);
return dfs(0, 0, k);
}
};Last updated