leetcode 377 组合总和IV
题目
给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。
题目数据保证答案符合 32 位整数范围。
示例
输入: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)
请注意,顺序不同的序列被视作不同的组合。
解析
根据示例,虽说写的是求组合,但其实是要求排列,且求的是排列的个数;
如下要点要牢记:
求组合数:外层for循环遍历物品,内层for遍历背包。
求排列数:外层for遍历背包,内层for循环遍历物品。
再来一遍动规五部曲:
1.确定dp数组以及下标的含义
dp[i]: 凑成目标正整数为i的排列个数为dp[i];即i是背包容量,dp[i]是个数
2.确定递推公式
在目标和和 零钱兑换II中也是一样,求装满背包有几种方法,递推公式一般都是:
dp[i] += dp[i - nums[j]]; (背下来)
func combinationSum4(nums []int, target int) int {// 首先题目写的是组合,但根据示例,其实是排列// 如果是排列,那么遍历背包的顺序就是先背包,再物品了dp := make([]int, target+1) // 背包容量为target+1dp[0] = 1 for i := 0; i <= target; i++ { // i是背包,可以等于for j := 0; j < len(nums); j++ { // j是物品if i - nums[j] >= 0 { // 这一行表示此次循环中这个背包还能装下dp[i] += dp[i-nums[j]] //注意谁是i,谁是j}}}return dp[target]
}
leetcode 377 组合总和IV相关推荐
- 代码随想录44——动态规划:完全背包理论基础、518零钱兑换II、377组合总和IV
文章目录 1.完全背包理论基础 2.518零钱兑换II 2.1.题目 2.2.解答 3.377组合总和IV 3.1.题目 3.2.解答 4.组合和排列问题的便利顺序 4.1.组合问题 4.2.排列问题 ...
- 算法训练Day44 动态规划专题- 背包问题 | 完全背包基础知识;LeetCode518. 零钱兑换(装满背包有多少种方法,组合数);377.组合总和IV(装满背包有多少种方法,排列数)
前言: 算法训练系列是做<代码随想录>一刷,个人的学习笔记和详细的解题思路,总共会有60篇博客来记录,计划用60天的时间刷完. 内容包括了面试常见的10类题目,分别是:数组,链表,哈希表 ...
- 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 ...
- 100. Leetcode 377. 组合总和 Ⅳ (动态规划-完全背包)
根据题意可判断属于完全背包队列问题 步骤一.确定状态: 确定dp数组及下标含义 dp数组的大小是target+1, 那么这时候背包的容量才能取到target, dp[j]表示的是装满容量为[j]的背包 ...
- 377. 组合总和IV
DP数组表示凑成target有多少种方法 dp[j]!+=dp[j-nums[i]] 和0-1背包相反,先遍历容量再遍历物品 这道题说所有情况都小于INT_MAX,我的第一反映是高个long long ...
- 模拟卷Leetcode【普通】377. 组合总和 Ⅳ
377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 ...
最新文章
- SAP MM MB21创建预留单据报错- Error during conversion to alternative units of measure -
- vector的实现原理
- 动态规划之硬币表示问题
- python机器学习、数据分析常用第三方库(实时更新)
- git仓库的推送问题
- CoreText使用介绍
- 一句话解释什么是回归
- ajax获取后生成元素,获取动态的子元素生成的内容与jQuery AJAX
- FragmentSharedFabTransition
- 51单片机的红外计数器设计
- MIKE 21 教程 2.5 水动力模块教学:涡粘系数(Eddy viscosity),河床阻力与曼宁系数(Bed Resistance)
- Windows触发事件ID说明
- 【退役贴】再见了ACM,再会了算法竞赛
- 快过年了用Python抢红包
- 青龙羊毛——酷狗放羊娃(搬运)
- ddtv.space index.php,图解MongoDB原理(二)
- (转载)45岁以后,外企的人都到去哪里了呢?
- Dhtml,html,xhtml的区别
- 【WLAN】Android 13 WIFI 选网机制讲解
- 建筑物轮廓(含楼层或者高度)
热门文章
- PACKAGE SZC
- Mirai QQ群机器人零基础教程(1)
- 微信云控系统怎么样,虚拟机手机靠谱么?
- 《完美搞砸中台项目的10个方法!》
- 解决找不到 css/modules/layer/default/layer.css?v=3.1.1 的问题
- Image Processing——图像处理教程(二)之MATLAB基础
- Mybatis 一对一、一对多、多对多
- php支付接口,代付、感悟
- 浅析云卡通的美食城应用前景
- linux 修改文件时间戳命令,linux下touch命令修改文件时间戳