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:组合总和 Ⅳ相关推荐

  1. leetcode.377. 组合总和 Ⅳ---dp问题

    377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 ...

  2. Java实现 LeetCode 377 组合总和 Ⅳ

    377. 组合总和 Ⅳ 给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数. 示例: nums = [1, 2, 3] target = 4 所有可能的组合为: (1, 1 ...

  3. [Leetcode] 377. 组合总和 Ⅳ

    给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 位整数范围. 示例 1 ...

  4. leetcode 377. 组合总和 Ⅳ(dp)

    给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 位整数范围. 示例 1 ...

  5. leetcode 377 组合总和IV

    题目 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 位整数范围. 示 ...

  6. 100. Leetcode 377. 组合总和 Ⅳ (动态规划-完全背包)

    根据题意可判断属于完全背包队列问题 步骤一.确定状态: 确定dp数组及下标含义 dp数组的大小是target+1, 那么这时候背包的容量才能取到target, dp[j]表示的是装满容量为[j]的背包 ...

  7. 模拟卷Leetcode【普通】377. 组合总和 Ⅳ

    377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 ...

  8. 【Leetcode】完全背包问题-377. 组合总和 Ⅳ

    [Leetcode]完全背包问题-377. 组合总和 Ⅳ 题目 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素 ...

  9. LeetCode 每日一题 377. 组合总和 Ⅳ

    377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 ...

  10. 【力扣-动态规划入门】【第 21 天】377. 组合总和 Ⅳ

    标题:377. 组合总和 Ⅳ 难度:中等 天数:第21天,第1/3题 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target ...

最新文章

  1. Glut处理鼠标事件:函数glutMouseFunc
  2. DirectUI界面编程(六)实现右键弹出菜单
  3. 20145105 《Java程序设计》第5周学习总结
  4. win7,ubuntu双系统——重装win7后如何恢复ubuntu引导
  5. Vue v-model 指令详解以及sync修饰符的使用场景(结合父子组件通信案例)
  6. [ZT]图像处理库的比较:OpenCV,FreeImage,CImg,CxImage
  7. Python学习笔记:演示多根继承
  8. 【BZOJ3105】新Nim游戏,线性基+贪心
  9. jenkins自动部署配置
  10. Eclipse中代码自动添加注释及代码注释模板
  11. c语言dda算法完整实现,计算机图形学DDA算法.doc
  12. kl距离 java_KL距离的计算
  13. ICML2022论文解读『Sparse Double Descent: Where Network Pruning Aggravates Overfitting』
  14. vue3的逻辑复用抽离
  15. Google Earth Engine(GEE)——NASA-USDA增强型SMAP全球土壤水分数据以10公里的空间分辨率提供全球的土壤水分信息
  16. MATLAB绘制B样条曲线
  17. 使用 itext 和 flying-saucer 实现 html 转 PDF
  18. Clickhouse基本函数( 转载)
  19. 443端口是什么,如何启用?
  20. Android简单计时器详解(Timer)

热门文章

  1. 小米手机防盗nbsp;方法、安全及可…
  2. 因为我懒,所以选择数学
  3. SpringMVC - 入门
  4. java最简单最全入门基础笔记(不简单,不全你打我)
  5. 今天写了篇中间件的论文
  6. 3Blue1Brown-线性代数的本质
  7. 分享几个手机必备实用APP,建议收藏
  8. HPB Introduction
  9. Android基础总结
  10. Maven与Gradle项目构建工具