当前位置: 首页 > article >正文

leecode377.组合总和IV

本题其实是多重背包问题,对于价值和重量都是nums[i]的的物品,求装满这个容量为4的背包共有多少种排列方式
 如果是组合问题,那么遍历顺序是先物品后背包,这样能保证物品按从小到大顺序依次放置,对于实例1求出来为4;但是本题其实是排列问题,那么遍历顺序就应该是先背包再物品,先固定背包的大小,再依次放置物品进行试探就能保证求出排列数

class Solution {
public:
    int combinationSum4(vector<int>& nums, int target) {
        int n=nums.size(),bagWeight=target;
        vector<int> dp(bagWeight+1,0);
        dp[0]=1;
        for(int i=0;i<=bagWeight;i++)
            for(int j=0;j<n;j++)
                if(i>=nums[j])
                    if(dp[i]<INT_MAX-dp[i-nums[j]])
                        dp[i]+=dp[i-nums[j]];
        return dp[bagWeight];
    }
};


http://www.kler.cn/a/458163.html

相关文章:

  • C++ 设计模式:组合模式(Composite Pattern)
  • 回顾2024,加油2025!All, You and me!
  • overscroll-behavior-解决H5在ios上过度滚动的默认行为
  • 黑森矩阵(Hessian matrix)
  • 【无线传感网】无线传感器网络拓扑控制技术
  • 区块链安全常见的攻击分析——Unprotected callback - ERC721 SafeMint reentrancy【8】
  • 【MySQL】十三,关于MySQL的全文索引
  • jangow靶机
  • 【探花交友】day01—项目介绍与环境搭建
  • 10道JavaWeb常问面试题
  • Dify服务器部署教程
  • Python中构建终端应用界面利器——Blessed模块
  • QT笔记- QTreeView + QFileSystemModel 当前位置的保存与恢复 #选中 #保存当前索引
  • 2025年我国网络安全发展形势展望
  • C语言基础学习记录-内存管理
  • TCP 为什么采用三次握手和四次挥手以及 TCP 和 UDP 的区别
  • 实用技巧:关于 AD修改原理图库如何同步更新到有原理图 的解决方法
  • 【Linux】:Linux网络协议
  • Redis 多机功能 — 复制、Sentinel及集群
  • 为什么推荐使用构造函数注入而非@Autowired注解进行字段注入
  • 如何做一款游戏
  • Vuex中dispatch的用法
  • json的作用?
  • Spring Boot教程之三十九: 使用 Maven 将 Spring Boot 应用程序 Docker 化
  • youtube下载的视频怎么保存到本地
  • 华为:数字化转型只有“起点”,没有“终点”