3130. 找出所有稳定的二进制数组 II
代码如下:
class Solution
{
public:
int numberOfStableArrays(int zero, int one, int limit)
{
vector<vector<array<int, 2>>> f(zero + 1, vector<array<int, 2>>(one + 1));
for (int i = 1; i <= min(limit, zero); i++)
{
f[i][0][0] = 1;
}
for (int j = 1; j <= min(limit, one); j++)
{
f[0][j][1] = 1;
}
for (int i = 1; i <= zero; i++)
{
for (int j = 1; j <= one; j++)
{
f[i][j][0] = ((long long)f[i - 1][j][0] + f[i - 1][j][1] + (i > limit ? mod - f[i - limit - 1][j][1] : 0)) % mod;
f[i][j][1] = ((long long)f[i][j - 1][0] + f[i][j - 1][1] + (j > limit ? mod - f[i][j - limit - 1][0] : 0)) % mod;
}
}
return (f[zero][one][0] + f[zero][one][1]) % mod;
}
private:
const int mod = 1'000'000'007;
};