leetcode-377:组合总和 Ⅳ
leetcode-377:组合总和 Ⅳ
- 题目
- 解题
- 方法一:动态规划
题目
题目链接
给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。
题目数据保证答案符合 32 位整数范围。
示例 1:
输入:nums = [1,2,3], target = 4
输出:7
解释:
所有可能的组合为:
(1, 1, 1, 1)
(1, 1, 2)
(1, 2, 1)
(1, 3)
(2, 1, 1)
(2, 2)
(3, 1)
请注意,顺序不同的序列被视作不同的组合。
示例 2:
输入:nums = [9], target = 3
输出:0
解题
方法一:动态规划
参考链接
假设新加的数放在右侧,
比如我们dp[4]中对于112的排序要包含 (1,2,1),(1,1,2),(2,1,1)
举个例子说明一下排序性:
在dp[4]=dp[4-1]+dp[4-2]+dp[4-3]=dp[3]+dp[2]+dp[1];
其中dp[3]=4 为 111,21,12,3
dp[2]=2 为11,2
dp[1]=1 为1
其中211 来源于dp[3]中的21, 我们补个1
121来源于dp[3]中的12,我们补个1
112来源dp[2]中的11,我们补个2
假设我们每次只能把新的数字放在右侧,那么对于容量为3的背包来说,3来源于dp[0],12来源于dp[1],21来源于dp[2]。(蓝色代表原有的数字,红色代表新加入的数字)
class Solution {public:int combinationSum4(vector<int>& nums, int target) {vector<int> dp(target+1);dp[0]=1;for(int i=0;i<=target;i++){for(int j=0;j<nums.size();j++){if(i-nums[j]>=0&&dp[i]<INT_MAX-dp[i-nums[j]]){dp[i]+=dp[i-nums[j]];}}}return dp[target];}
};
总结:
如果求组合数就是外层for循环遍历物品,内层for遍历背包。
如果求排列数就是外层for遍历背包,内层for循环遍历物品。
如果求01背包问题,容量从末尾开始遍历。
如果求完全背包问题,容量从头开始遍历。
leetcode-377:组合总和 Ⅳ相关推荐
- leetcode.377. 组合总和 Ⅳ---dp问题
377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 ...
- Java实现 LeetCode 377 组合总和 Ⅳ
377. 组合总和 Ⅳ 给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数. 示例: nums = [1, 2, 3] target = 4 所有可能的组合为: (1, 1 ...
- [Leetcode] 377. 组合总和 Ⅳ
给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 位整数范围. 示例 1 ...
- leetcode 377. 组合总和 Ⅳ(dp)
给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 位整数范围. 示例 1 ...
- leetcode 377 组合总和IV
题目 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 位整数范围. 示 ...
- 100. Leetcode 377. 组合总和 Ⅳ (动态规划-完全背包)
根据题意可判断属于完全背包队列问题 步骤一.确定状态: 确定dp数组及下标含义 dp数组的大小是target+1, 那么这时候背包的容量才能取到target, dp[j]表示的是装满容量为[j]的背包 ...
- 模拟卷Leetcode【普通】377. 组合总和 Ⅳ
377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 ...
- 【Leetcode】完全背包问题-377. 组合总和 Ⅳ
[Leetcode]完全背包问题-377. 组合总和 Ⅳ 题目 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素 ...
- LeetCode 每日一题 377. 组合总和 Ⅳ
377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 ...
- 【力扣-动态规划入门】【第 21 天】377. 组合总和 Ⅳ
标题:377. 组合总和 Ⅳ 难度:中等 天数:第21天,第1/3题 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target ...
最新文章
- Glut处理鼠标事件:函数glutMouseFunc
- DirectUI界面编程(六)实现右键弹出菜单
- 20145105 《Java程序设计》第5周学习总结
- win7,ubuntu双系统——重装win7后如何恢复ubuntu引导
- Vue v-model 指令详解以及sync修饰符的使用场景(结合父子组件通信案例)
- [ZT]图像处理库的比较:OpenCV,FreeImage,CImg,CxImage
- Python学习笔记:演示多根继承
- 【BZOJ3105】新Nim游戏,线性基+贪心
- jenkins自动部署配置
- Eclipse中代码自动添加注释及代码注释模板
- c语言dda算法完整实现,计算机图形学DDA算法.doc
- kl距离 java_KL距离的计算
- ICML2022论文解读『Sparse Double Descent: Where Network Pruning Aggravates Overfitting』
- vue3的逻辑复用抽离
- Google Earth Engine(GEE)——NASA-USDA增强型SMAP全球土壤水分数据以10公里的空间分辨率提供全球的土壤水分信息
- MATLAB绘制B样条曲线
- 使用 itext 和 flying-saucer 实现 html 转 PDF
- Clickhouse基本函数( 转载)
- 443端口是什么,如何启用?
- Android简单计时器详解(Timer)