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

力扣题解(组合总和IV)

377. 组合总和 Ⅳ

给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。

题目数据保证答案符合 32 位整数范围。

思路:

本题实质上是给一些数字,让他们在满足和是target的情况下随机排列组合,然后返回所有的排列数目。注意,本题和完全背包问题有所不同,完全背包问题不要求有先后顺序的区别,比如先放第i个物品再放第一个物品和先放第一个物品再放第二个物品没有区别,但是本题例如1+3=4和3+1=4就是不一样,因此dp数组的含义,具体做法有所不同。

dp[i]表示和是i的所有组合数目。dp[i]+=dp[i-nums[i]]。(对于可以视为在和是i-nums[i]的所有排列方法后面加一个nums[i],注意我的说法,是在所有组合的后面,是后面而不是任意位置,这一点接下来会用到!)

对于循环,本题外层循环是i从0到target,内层循环是对nums数组的遍历。本题外层循环个人理解方式是规定目前最后进入的元素该是那个,然后内存循环表示要进nums[i],这样就可以实现每次遍历都在对应的上一个外层循环排序后加一个元素,保证了没有重复。这里不太好说明,就比如假如有数字1,2,3,第一次会有三个式子1=1,2=2,3=3.然后第二次大循环会有1+1=2,1+2=3,1+3=4,2+1=3,2+2=4,2+3=5,3+1=4,3+2=5,3+3=6,可以很明显看出除了最后一个元素外的前面那一串式子就是上一次外层循环得到的所有式子。(即1,2,3)

初始化:

dp[0]=1,因为一个元素都没有才能使得和为0,只有一种组合。

注意:本题所有排列组合数目可能会非常大,因此通过模运算来保证不会超出int存储范围。

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • spark shell
  • 汽车及零部件研发项目管理系统:一汽东机工选择奥博思 PowerProject 提升研发项目管理效率
  • 人是一个AI Agent吗?
  • React Hook 总结(React 萌新升级打怪中...)
  • python打包exe文件-实现记录
  • Linux下如何安装配置Elastic Stack日志收集系统
  • 【Rust光年纪】解锁Rust语言核心库奥秘:加密、数字签名和数据库操作全面解析
  • spark 动态资源分配dynamicAllocation
  • Linux cd 和 pwd 命令
  • ESP8266模块(2)
  • [图解]《分析模式》漫谈16-“我用的”不能变成“我的”
  • python基础知识点(蓝桥杯python科目个人复习计划71)
  • C的预编译指令
  • LabVIEW和Alicat Scientific质量流量计实现精确流量控制
  • 2024 React 和 Vue 的生态工具
  • ES2017异步函数现已正式可用
  • es6
  • ES6 ...操作符
  • Git 使用集
  • mongo索引构建
  • React 快速上手 - 07 前端路由 react-router
  • Redis在Web项目中的应用与实践
  • uni-app项目数字滚动
  • Vue 动态创建 component
  • vuex 学习笔记 01
  • 关于 Cirru Editor 存储格式
  • 排序算法学习笔记
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 算法-图和图算法
  • 算法系列——算法入门之递归分而治之思想的实现
  • 微信小程序实战练习(仿五洲到家微信版)
  • 用Visual Studio开发以太坊智能合约
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • No resource identifier found for attribute,RxJava之zip操作符
  • 仓管云——企业云erp功能有哪些?
  • 湖北分布式智能数据采集方法有哪些?
  • 如何在招聘中考核.NET架构师
  • 数据可视化之下发图实践
  • ​【已解决】npm install​卡主不动的情况
  • ​浅谈 Linux 中的 core dump 分析方法
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #includecmath
  • #nginx配置案例
  • #pragma once与条件编译
  • #stm32驱动外设模块总结w5500模块
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (4.10~4.16)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (TOJ2804)Even? Odd?
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047