人一我百,人十我|

胖柚の工作室

园龄:2年1个月粉丝:2关注:15

📂力扣
🔖dp
2024-04-15 16:29阅读: 9评论: 0推荐: 0

2466. 统计构造好字符串的方案数

题目链接:

本题其实是爬楼梯这道题的变式。

题目要求长度在 lowhigh 之间的好字符串个数,那我直接把所有长度的好字符串个数搞出来,再取长度在这个区间的相加就完事了。

f[i] 表示构造长为 i 的字符串的方案数,也即长为 i 的好字符串的个数。看最后一步是走的 zero 还是 one,若是前者则有 f[izero] 个方案;若是后者则有 f[ione] 个方案。所有的方案数即为合法情况下这两种之和。

class Solution {
public:
int countGoodStrings(int low, int high, int zero, int one) {
const int MOD = 1e9 + 7;
vector<int> f(high + 1);
f[0] = 1;//构造空串的方案数为1,这是一个常用的技巧
for (int i = 1; i <= high; i++) {
if (i >= zero) f[i] = (f[i] + f[i - zero]) % MOD;
if (i >= one) f[i] = (f[i] + f[i - one]) % MOD;
}
int res = 0;
for (int i = low; i <= high; i++) {
res = (res + f[i]) % MOD;
}
return res;
}
};

本文作者:pangyou3s

本文链接:https://www.cnblogs.com/pangyou3s/p/18136304

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   胖柚の工作室  阅读(9)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起