Day38:518.零钱兑换II、377. 组合总和 Ⅳ

文章目录

    • 518.零钱兑换II
      • 思路
      • 代码实现
    • 377. 组合总和 Ⅳ
      • 思路
      • 代码实现


518.零钱兑换II

题目链接

思路

  1. 确定dp数组(dp table)以及下标的含义
    dp[j]:组合元素和为j的组合方式
  2. 确定递推公式
    题目不是选取最优解,而是求路径总和,则取不同数字的零钱coin[i]时都有dp[j-coin[i]]种方法,
    则dp[j]=dp[j-coin[i]]
  3. dp数组如何初始化
    后台题目要求是dp[0]=1,这里题目没给出准确的说法
  4. 确定遍历顺序
    外层for循环从前往后,内层for循环也是从前往后
    这和01背包完全不同,根本原因就是这里的钱每个面额的数量都没有限制,所以可以重复选取
    但外层for循环和内存for循环不可以调换,因为现在是先遍历钱,钱是不会出现{5,1}和{1,5}这样的重复现象的;但如果钱变成内层for循环的话,就可以重复选取,这就是后面那道题的排列问题
  5. 举例推导dp数组

代码实现

class Solution {
public:int change(int amount, vector<int>& coins) {vector<int> dp(10010,0);dp[0]=1;for(int i=0;i<coins.size();i++){for(int j=coins[i];j<=amount;j++){dp[j]+=dp[j-coins[i]];}}return dp[amount];}
};

377. 组合总和 Ⅳ

题目链接

思路

这道题就是排列问题

  1. 确定dp数组(dp table)以及下标的含义
    dp[j]:组合元素和为j的组合方式
  2. 确定递推公式
    题目不是选取最优解,而是求路径总和,则取不同数字的零钱coin[j]时都有dp[i-coin[j]]种方法,
    则dp[i]=dp[i-coin[j]]
  3. dp数组如何初始化
    后台题目要求是dp[0]=1,这里题目没给出准确的说法
  4. 确定遍历顺序
    外层for循环从前往后,内层for循环也是从前往后
    这就是排列问题,{5,1}和{1,5}都是正确结果。而钱变成内层for循环的话,就可以重复选取。先遍历背包容量,当容量允许装入背包,就可以累加记录方法种类,代码实现和上一道题差不多,只是换了内外层的遍历
  5. 举例推导dp数组

这里有一个dp[i]<INT_MAX-dp[i-nums[j]]操作,因为测试数据比较大时累加结果可能超过了INT_MAX,为了保证数据不溢出,就需要判断dp[i]+dp[i-nums[j]]<INT_MAX是否成立,而dp[i]+dp[i-nums[j]]可能还是会溢出,所以只能用减法写

代码实现

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/163081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【运动规划】191 自适应跟踪kinodynamicrrt的路径

分层法&#xff1a; two layer approach 自适应控制&#xff0c;跟随轨迹。运动规划&#xff1a;扩展自由空间&#xff08;基于速度约束缩小自由空间&#xff09;为控制部分留余量&#xff0c;确保安全。 控制设计&#xff1a; 考虑平移和旋转&#xff0c;速度环控制&#xff…

银河麒麟安装Docker

# 配置阿里云 Centos8 镜像源&#xff0c;需要额外的一些依赖&#xff0c;而这些依赖在麒麟官方的源里面是没有的 sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo# 配置阿里云 docker 镜像源 sudo yum-config-manager --add-r…

【23真题】Top3!最高148分,数二英二!

今天分享的是23年西安交通大学815的信号与系统数字信号处理试题及解析。众所周知&#xff0c;Top3一共有10所&#xff0c;其中就包括了西安交大&#xff01; 本套试卷难度分析&#xff1a;平均分为117-128分&#xff0c;最高分为148分&#xff01;22年西安交大909/815的真题我…

2022-4-11 南科大现代控制与最优估计

CLEAR_LAB B站视频 矩阵的分块矩阵操作 diagonal 对角阵 identity matrix 单位矩阵 矩阵克罗内克积

【LeetCode二叉树进阶题目】606. 根据二叉树创建字符串,102. 二叉树的层序遍历,107. 二叉树的层序遍历 II

二叉树进阶题目 606. 根据二叉树创建字符串解题思路及实现 102. 二叉树的层序遍历解题思路及实现 107. 二叉树的层序遍历 II解题思路及实现 606. 根据二叉树创建字符串 描述 给你二叉树的根节点 root &#xff0c;请你采用前序遍历的方式&#xff0c;将二叉树转化为一个由括号…

Android、ESP32、ESP8266的mqtt通信

Android activity_main <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http:/…

Python dbm库:利用键值对存储数据

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是涛哥&#xff0c;今天为大家分享 Python dbm库&#xff1a;利用键值对存储数据&#xff0c;文章6000字&#xff0c;阅读大约20分钟&#xff0c;大家enjoy~~ Python中的dbm模块提供了一种轻量级的数据库管理工…

【ARM 嵌入式 编译系列 2.3 -- GCC 中指定 ARMv8-M 的 Thumb 指令集参数详细介绍】

请阅读【ARM GCC 编译专栏导读】 上篇文章:【ARM 嵌入式 编译系列 2.2 – 如何在Makefile 中添加编译时间 | 编译作者| 编译 git id】 下篇文章:【ARM 嵌入式 C 入门及渐进 3 – GCC attribute((weak)) 弱符号使用】 文章目录 ARMv8-M 架构Thumb 指令集ARMv8-M 与 Thumb-mth…

call ,apply,bind 及异同点

目录 1、call 2、apply 3、bind 4、三者异同 1、call call 函数调用 &#xff1a;1、让函数执行 2、改变函数this指向 参数&#xff1a; 第一个参数是this指 向&#xff0c;第二个参数开始传递给函数的实参 函数名.call&#xff08;this指…

redis---主从复制及哨兵模式(高可用)

主从复制 主从复制&#xff1a;主从复制是redis实现高可用的基础&#xff0c;哨兵模式和集群都是在主从复制的基础之上实现高可用。 主从负责的工作原理 1、主节点&#xff08;master&#xff09; 从节点&#xff08;slave&#xff09;组成&#xff0c;数据复制是单向的&a…

VUE+element可以为空不为空时只能为(正整数和0)的验证

rule{ 变量: [ { required: true, validator: validateparamPosition, trigger: blur }] } ​​​​​​​ ​​​​​​​ ​​​​​​​ var validateparamPosition (rule, value, callback) > { if (!value) { //先判断空可以过 ca…

【HarmonyOS】JSON格式化解析Map数据失败

【关键字】 数据转换、JSON.stringify、Object.fromEntries 【问题背景】 将数组转换成Map对象&#xff0c;然后调用let str JSON.stringify(newMap)&#xff0c;将Map转换成字符串&#xff0c;转换出来的结果是{} 问题代码&#xff1a; let data [{ key: where, value: …

python数据结构与算法-13_高级排序算法-快速排序

快速排序 快速排序名字可不是盖的&#xff0c;很多程序语言标准库实现的内置排序都有它的身影&#xff0c;我们就直奔主题吧。 和归并排序一样&#xff0c;快排也是一种分而治之(divide and conquer)的策略。归并排序把数组递归成只有单个元素的数组&#xff0c;之后再不断两两…

docker安装mysql挂着目录和mysql备份和恢复

第一&#xff0c;镜像拉取&#xff0c;运行镜像并挂载目录&#xff0c;尝试挂bin下&#xff0c;启动不了&#xff0c;不知为啥 docker run --privilegedtrue -itd --namevmysql -p 3306:3306 -v /home/vmysql:/home/vmysql -e MYSQL_ROOT_PASSWORD123456 mysql&#xff08;图…

Nancy (二)

最近做CS项目&#xff0c;一直在使用TCPSocket 做数据传输&#xff0c;不太爽&#xff0c;砸门可是多年BS的开发&#xff0c;这样开发接口出去比较费劲&#xff0c;但是又不想用asp.net mvc webapi,要按照IIS&#xff0c;有些工控机的系统环境也是很尴尬的&#xff0c;那么也可…

用好说 AI 玩转奥特曼表情包,居然还能和他们聊个天

你喜欢奥特曼吗&#xff1f;你相信光吗&#xff1f; 如果你已经追完了特摄剧、刷完了大电影、用滥了那几个表情包&#xff0c;那不如来试试用 AI 给自己整点活儿新 “物料”。 不管是和奥特曼 “面对面” 聊天还是 “无中生有” 表情包&#xff0c;AI 都能做&#xff01; (※…

Python 使用SQLAlchemy数据库模块

SQLAlchemy 是用Python编程语言开发的一个开源项目&#xff0c;它提供了SQL工具包和ORM对象关系映射工具&#xff0c;使用MIT许可证发行&#xff0c;SQLAlchemy 提供高效和高性能的数据库访问&#xff0c;实现了完整的企业级持久模型。 ORM&#xff08;对象关系映射&#xff0…

MySQL For Windows的下载与安装

教程https://www.bilibili.com/read/cv26499785/ windowse下载地址https://dev.mysql.com/get/Downloads/MySQLInstaller/mysql-installer-community-8.0.35.0.msi

代理模式 (Proxy Pattern)

定义&#xff1a; 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它通过提供一个代理&#xff08;或称代表&#xff09;对象来控制对另一个对象的访问。这种模式创建了一个代理对象&#xff0c;用来代表实际对象的功能&#xff0c;从而可以在…

spring boot 热部署

相信小伙伴们在日常的开发中&#xff0c;调试代码时&#xff0c;免不了经常修改代码&#xff0c;这个时候&#xff0c;为了验证效果&#xff0c;必须要重启 Spring Boot 应用。 频繁地重启应用&#xff0c;导致开发效率降低&#xff0c;加班随之而来。有没有什么办法&#xff0…