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;
    }
};
相关推荐
源代码•宸3 分钟前
深入浅出设计模式——创建型模式之原型模式 Prototype
c++·经验分享·设计模式·原型模式
爱吃芒果的蘑菇10 分钟前
Python读取获取波形图波谷/波峰
python·算法
晨曦学习日记21 分钟前
Leetcode239:滑动窗口最大值,双端队列的实现!
数据结构·c++·算法
CoovallyAIHub21 分钟前
无人机图像+深度学习:湖南农大团队实现稻瘟病分级检测84%准确率
深度学习·算法·计算机视觉
2zcode29 分钟前
基于Matlab自适应阈值分割算法的图像处理研究
图像处理·算法·matlab
阿群今天学习了吗1 小时前
RNN、LSTM、Transformer推荐博文
人工智能·笔记·python·学习·算法
wait a minutes1 小时前
【c++】leetcode763 划分字母区间
开发语言·c++
菥菥爱嘻嘻1 小时前
力扣面试150(42/150)
算法·leetcode·职场和发展
Morriser莫1 小时前
动态规划Day5学习心得
算法·动态规划
菜还不练就废了1 小时前
7.25 C/C++蓝桥杯 |排序算法【下】
c语言·c++·排序算法