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;
    }
};
相关推荐
驴友花雕34 分钟前
【花雕学编程】Arduino BLDC 之群体机器人协同探索
c++·单片机·嵌入式硬件·arduino bldc·群体机器人协同探索
驴友花雕37 分钟前
【花雕学编程】Arduino BLDC 之仿人机器人膝关节稳定系统
c++·单片机·嵌入式硬件·arduino bldc·仿人机器人膝关节稳定系统
Qhumaing1 小时前
C++学习:【PTA】数据结构 7-1 实验7-1(最小生成树-Prim算法)
c++·学习·算法
踩坑记录2 小时前
leetcode hot100 3.无重复字符的最长子串 medium 滑动窗口(双指针)
python·leetcode
Z1Jxxx3 小时前
01序列01序列
开发语言·c++·算法
坚定学代码3 小时前
基于观察者模式的ISO C++信号槽实现
开发语言·c++·观察者模式·ai
汽车仪器仪表相关领域4 小时前
全自动化精准检测,赋能高效年检——NHD-6108全自动远、近光检测仪项目实战分享
大数据·人工智能·功能测试·算法·安全·自动化·压力测试
ha20428941944 小时前
Linux操作系统学习记录之---TcpSocket
linux·网络·c++·学习
Doro再努力4 小时前
【数据结构08】队列实现及练习
数据结构·算法