classSolution { public: intwardrobeFinishing(int m, int n, int cnt){ int ans = 0; queue<pair<int, int>> q; vector<vector<bool>> vis(m, vector<bool>(n)); q.push({0, 0}); while (!q.empty()) { int i = q.front().first; int j = q.front().second; q.pop(); if (i >= m || j >= n) continue; if (sum(i) + sum(j) > cnt) continue; if (vis[i][j]) continue; vis[i][j] = true; ans++; q.push({i + 1, j}); q.push({i, j + 1}); } return ans; } intsum(int x){ int s = 0; while (x != 0) { s += x % 10; x /= 10; } return s; } };
classSolution { public: int ans = 0; int m, n, cnt; intwardrobeFinishing(int m, int n, int cnt){ this->m = m; this->n = n; this->cnt = cnt; vector<vector<bool>> vis(m, vector<bool>(n)); dfs(0, 0, vis); return ans; } intsum(int x){ int s = 0; while (x != 0) { s += x % 10; x /= 10; } return s; } voiddfs(int i, int j, vector<vector<bool>> &vis){ if (i >= m || j >= n) return; if (sum(i) + sum(j) > cnt) return; if (vis[i][j]) return; vis[i][j] = true; ans++; dfs(i + 1, j, vis); dfs(i, j + 1, vis); } };