-
-
Notifications
You must be signed in to change notification settings - Fork 8.9k
/
Copy pathSolution2.cpp
26 lines (26 loc) · 963 Bytes
/
Solution2.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
public:
int numberOfStableArrays(int zero, int one, int limit) {
const int mod = 1e9 + 7;
using ll = long long;
ll f[zero + 1][one + 1][2];
memset(f, 0, sizeof(f));
for (int i = 1; i <= min(zero, limit); ++i) {
f[i][0][0] = 1;
}
for (int j = 1; j <= min(one, limit); ++j) {
f[0][j][1] = 1;
}
for (int i = 1; i <= zero; ++i) {
for (int j = 1; j <= one; ++j) {
f[i][j][0] = (f[i - 1][j][0] + f[i - 1][j][1]
- (i - limit - 1 < 0 ? 0 : f[i - limit - 1][j][1]) + mod)
% mod;
f[i][j][1] = (f[i][j - 1][0] + f[i][j - 1][1]
- (j - limit - 1 < 0 ? 0 : f[i][j - limit - 1][0]) + mod)
% mod;
}
}
return (f[zero][one][0] + f[zero][one][1]) % mod;
}
};