leetcode 3183. 达到总和的方法数量

题目如下

数据范围

复制代码
本题是混合背包问题,但是我们可以把两个限定数量的硬币放到后面什么意思呢?
1 2 6是随便用的我们可以利用上楼梯的思想先把不用4的数量算出来随后把4和8即1个4和2个4当做0/1背包来做。

通过代码

cpp 复制代码
class Solution {
public:
    int numberOfWays(int n) {
        vector<int> dp(n + 1, 0);
        vector<int> co = {1, 2, 6};
        int mod = 1e9 + 7;
        dp[0] = 1;
        for (int i = 0; i < 3; i++) {
            for (int j = 1; j <= n; j++) {
                if(j >= co[i])
                    dp[j] = (dp[j] + dp[j - co[i]]) % mod;
                
            }
        }
        int ans = dp[n];
        if(n >= 4)ans = (ans + dp[n - 4]) % mod;
        if(n >= 8)ans = (ans + dp[n - 8]) % mod;
        return ans;
    }
};
相关推荐
可触的未来,发芽的智生23 分钟前
新奇特:神经网络的自洁之道,学会出淤泥而不染
人工智能·python·神经网络·算法·架构
放羊郎27 分钟前
SLAM算法分类对比
人工智能·算法·分类·数据挖掘·slam·视觉·激光
BigDark的笔记40 分钟前
[温习C/C++]C++刷题技巧—字符串查找find、find_if、find_first_of和find_last_of
c++
初圣魔门首席弟子1 小时前
c++嵌套类和局部类详细介绍
java·开发语言·c++
橘子师兄1 小时前
类和对象(上)
开发语言·c++
Juan_20121 小时前
P1447题解
c++·数学·算法·题解
ai智能获客_狐狐1 小时前
智能外呼产品架构组成
人工智能·算法·自然语言处理·架构·语音识别
祁同伟.1 小时前
【C++】栈、队列、双端队列、优先级队列、仿函数
c++·容器·stl
高山上有一只小老虎2 小时前
输出单向链表中倒数第k个结点
java·数据结构·链表
Algo-hx2 小时前
数据结构入门 (五):约束即是力量 —— 深入理解栈
数据结构·算法