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;
    }
};
相关推荐
玄同7652 分钟前
Python Random 模块深度解析:从基础 API 到 AI / 大模型工程化实践
人工智能·笔记·python·学习·算法·语言模型·llm
爱吃生蚝的于勒3 分钟前
【Linux】线程概念(一)
java·linux·运维·服务器·开发语言·数据结构·vim
Pluchon5 分钟前
硅基计划4.0 算法 简单模拟实现位图&布隆过滤器
java·大数据·开发语言·数据结构·算法·哈希算法
符哥20086 分钟前
C++ 适合初学者的学习笔记整理
c++·笔记·学习
独断万古他化10 分钟前
【算法通关】前缀和:和为 K、和被 K整除、连续数组、矩阵区域和全解
算法·前缀和·矩阵·哈希表
历程里程碑13 分钟前
普通数组-----除了自身以外数组的乘积
大数据·javascript·python·算法·elasticsearch·搜索引擎·flask
静听山水15 分钟前
Redis核心数据结构-list
数据结构·redis·list
AI视觉网奇15 分钟前
blender 导入fbx 黑色骨骼
学习·算法·ue5·blender
星火开发设计17 分钟前
this 指针:指向对象自身的隐含指针
开发语言·数据结构·c++·学习·指针·知识
梵刹古音17 分钟前
【C++】构造函数
开发语言·c++