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数组的定义及下标的含义
dp[i][j] : 表示前i个数组成背包j的组合数为dp[i][j]
- 状态转移方程
j<nums[i] , dp[i][j] = dp[i-1][j]
j≥nums[i], dp[i][j] = dp[i][j-nums[i]]+ dp[i][j-nums[i-1]]+…+ dp[i][j-nums[0]]
关于理解 j≥nums[i]时dp[i][j]的状态方程
因为这个是不分顺序并且是无穷背包 所以 前面的每个物品都有可能被装入背包
然后累加起来就是不分顺序的组合数
3. 初始化
初始第一行和第一列
第一列为1,因为背包为0时的组合数只有一个不取数即可。
package 力扣;/*** @author yyq* @create 2022-06-21 18:18*/
public class leetcode377 {public static void main(String[] args) {leetcode377 leetcode377=new leetcode377();leetcode377.combinationSum4(new int[]{1,2,3},4);}public int combinationSum4(int[] nums, int target) {// 创建dp数组int[][] dp=new int[nums.length][target+1];// 初始化dp数组for (int i=0;i<nums.length;i++){dp[i][0] = 1;}for (int j=1;j<target+1;j++){if(j>=nums[0]){if(j%nums[0]==0){dp[0][j] = 1;}else dp[0][j] = 0;}else dp[0][j] = 0;}// 填补dp数组// 外层循环物品 内层背包for (int i=1;i<nums.length;i++){for (int j=1;j<target+1;j++){if(j>=nums[i]){for (int x=0;x<=i;x++){dp[i][j] =dp[i][j] + dp[i][j-nums[x]];}}else dp[i][j] = dp[i-1][j];}}tools.printDP(dp,nums.length,target+1);return dp[nums.length-1][target];}
}
377.组合总和 Ⅳ相关推荐
- 377. 组合总和 Ⅳ golang 动态规划
题目 377. 组合总和 Ⅳ 类似322 给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数. 示例: nums = [1, 2, 3] target = 4 所有可能的组 ...
- 代码随想录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.排列问题 ...
- 力扣:377. 组合总和 Ⅳ
力扣:377. 组合总和 Ⅳ 题目: 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证 ...
- leetcode.377. 组合总和 Ⅳ---dp问题
377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 ...
- 模拟卷Leetcode【普通】377. 组合总和 Ⅳ
377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 ...
- LeetCode 每日一题 377. 组合总和 Ⅳ
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 ...
- 【力扣-动态规划入门】【第 21 天】377. 组合总和 Ⅳ
标题:377. 组合总和 Ⅳ 难度:中等 天数:第21天,第1/3题 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target ...
- 377. 组合总和 Ⅳ(JavaScript,动规)
377 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 ...
最新文章
- 一个跨国银行的敏捷转型案例要点之Agile Center
- Linux I/O 那些事儿
- Angulary应用依赖里的zone.js
- 各种平台下Perl模块的安装方法
- cnn图像进行预测_CNN方法:使用聚合物图像预测其玻璃化转变温度
- 正确认识 Vista 激活期限
- Soul 网关源码阅读(一) 概览
- 如何将wiki个人空间共享给其他人_青年居室的共享空间设计
- 2015年度总结-面对真实的自己
- ucgui 字体生成与字体个性化编辑
- 电脑输入法变成繁体中文如何改回来
- erlang ets写入mysql_Erlang 进程字典 VS ETS
- 五天带你学完《计算机网络》,期末考试不挂科
- 江北机场停车费多少钱一天,重庆江北机场附近停车场哪里最便宜
- 快速将PDF转换为图片:免费的在线PDF转换器
- UE4 4.26 Pixel Streaming 应用场景
- 深渊水妖 (模拟 看清题意
- Deep C (and C++) by Olve Maudal and Jon Jagger— 很不错的国外技术文章
- 政权更迭最频繁的魏晋南北朝
- USB服务器赋能美团数字化建设
热门文章
- apple iMac一体机 装双系统 实战! (Apple +Win 7 64bit)Good
- [QMT]04-在QMT之外调用xtquant直接编写策略
- 两台W7系统的电脑,A电脑可以ping通B电脑,B电脑ping不通A电脑。
- 系统学习----Linux网络管理
- 2021阳城一中高考成绩查询,阳城一中高考北大清华录取名单曝光,原来是这些人!...
- 【黑马Java笔记+踩坑】MyBatisPlus基础
- 2018 Google I/O 干货摘要以及对Android开发者的影响
- ABP 多租户 对应多数据库 租户启动报错
- 华为方法:如何发展教练|内线?
- 如何查看Linux磁盘类型