解題心得
推導後會發現這是爬樓梯問題的變化版。
程式碼
class Solution {
public:
int countGoodStrings(int low, int high, int zero, int one) {
vector<int> dp(high + 1, 0);
dp[0] = 1;
int count = 0, mod = 1e9 + 7;
for(int i=1; i<=high; i++)
{
dp[i] = (i >= zero ? dp[i-zero] : 0) + (i >= one ? dp[i-one] : 0);
dp[i] %= mod;
if(low <= i && i <= high)
count = (count + dp[i]) % mod;
}
return count;
}
};
沒有留言:
張貼留言