leetcode2466,爬楼梯变体,取模注意
思路:
遍历low到high的长度,考虑最后的字符的情况,有两种情况嘛,如果长度允许,就继续减?
class Solution {static constexpr int MOD = 1e9 + 7;vector<int> memo;int dfs(int len, int zero, int one) {if(len < 0) {return 0;}if(len == 0) {return 1;}if(memo[len] != -1) {return memo[len];}memo[len] = 0;if (len >= zero) {memo[len] = (memo[len] + dfs(len - zero, zero, one)) % MOD;}if (len >= one) {memo[len] = (memo[len] + dfs(len - one, zero, one)) % MOD;}return memo[len];}public:int countGoodStrings(int low, int high, int zero, int one) {memo.resize(high + 1, -1);int res = 0;for(int i = low; i <= high; i++) {res = (res + dfs(i, zero, one)) % MOD;}return res;}
};// 遍历low到high的长度,考虑最后的字符的情况,有两种情况嘛,如果长度允许,就继续减?
就是爬楼梯那感觉!
然后取模要注意,
res += (dfs(i, zero, one)) % MOD;
正确!res = (res + dfs(i, zero, one)) % MOD;