dp
定义状态f[i]为能构造长度为i的字符串的种类,则状态转移方程为:
依次递推到长度大于等于high为止,答案为low到high之间的总和。
class Solution {
public:
const int mod=1e9+7;
long long ans=0;
int countGoodStrings(int low, int high, int zero, int one) {
int dp[high+1];
memset(dp,0,sizeof dp);
dp[0]=1;
for(int i=0;i<=high;i++){
if(i>=zero) dp[i]=dp[i-zero];
if(i>=one) dp[i]=(1LL*dp[i]+dp[i-one])%mod;
if(i>=low) ans=(ans+1LL*dp[i])%mod;
}
return ans;
}
};
时间复杂度:O(n)
空间复杂度:O(n)