代码随想录 518. 零钱兑换 II

题目
给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。
请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。
假设每一种面额的硬币有无限个。
题目数据保证结果符合 32 位带符号整数。
示例 1:
输入:amount = 5, coins = [1, 2, 5]
输出:4
解释:有四种方式可以凑成总金额:
5=5
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1
示例 2:
输入:amount = 3, coins = [2]
输出:0
解释:只用面额 2 的硬币不能凑成总金额 3 。
示例 3:
输入:amount = 10, coins = [10]
输出:1

解题思路
这是一个完全背包问题,用dp[j]表示凑齐金额为j的方案数,对于当前的金额j,dp[j]可以由两部分组成:一部分是不选取当前硬币coins[i],那么dp[j]的值就等于之前的dp[j];另一部分是选取当前硬币coins[i],那么dp[j]的值就等于dp[j - coins[i]](表示已经使用了一个coins[i],还需要凑齐金额j - coins[i])。初始化dp[0]=1. 最后返回dp[amount],即为结果。

代码实现

class Solution {
public:int change(int amount, vector<int>& coins) {vector<int> dp(amount + 1, 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];}
};

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

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

相关文章

Linux线程——常用API

线程创建 函数原型及头文件 #include <pthread.h> int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);参数解读 tidp当pthread_create成功返回时&#xff0c;由tidp指向的内存单元…

接口返回HTML页面详解

import requests from bs4 import BeautifulSoup import re import jsonurl https://listado.mercadolibre.com.mx/hogar-muebles-jardin/cocina/almacenamiento-organizacion/organizadores-cocina/_CustId_570995983_PrCategId_AD# 添加 headers 和 cookies headers {User-…

JS函数全解、闭包、递归、柯里化

函数的返回值由什么确定&#xff1f; 影响因素&#xff1a; 1.调用时输入的参数params 2.定义时的环境env let x1 x let a 1 function f1(x1){return x1 a }a 3 {let a 2console.log(f1(x)) // x3} a 4// 这个例子说明a是定义时的a &#xff0c;而不是执行时的a …

深度学习网站集锦1

深度学习网站集锦 1. https://paperswithcode.com/导航栏论文和代码做了对应可以下载数据集角度看对应相关paper code看神经网络常用方法paper及实现code有什么用处还有哪些网站 1. https://paperswithcode.com/ 超简单实用&#xff0c;推荐的深度学习科研必备网站&#xff08…

第三周:Python能力复盘

资料&#xff1a; 《笨办法学Python》阅读地址&#xff1a;https://www.bookstack.cn/read/LearnPython3TheHardWay 《廖雪峰Python教程》阅读地址&#xff1a;http://t.cn/RK0qGu7 《机器学习numpy与pandas基础》&#xff1a;https://zhuanlan.zhihu.com/p/639733816 《matplo…

组态和SCADA

在工业自动化领域&#xff0c;"组态"&#xff08;SCADA&#xff0c;Supervisory Control and Data Acquisition&#xff09;是一种用于监控和控制工业过程的系统。它是一种集成了数据采集、实时监控、远程操作和数据分析等功能的软件系统。 组态系统通常由以下几个主…

智能网关是什么

智能网关&#xff08;Smart Gateway&#xff09;是一种设备或系统&#xff0c;用于连接和交互不同类型的设备、传感器、终端和网络。它充当连接物联网&#xff08;IoT&#xff09;设备和互联网的桥梁&#xff0c;提供数据传输、通信协议转换和智能控制等功能。 智能网关在物联…

java多个设计模式解决大量if-else堆积

当面对大量的 if-else 语句时&#xff0c;可以考虑使用以下几种常见的设计模式来减少代码的复杂性和维护成本&#xff1a; 策略模式&#xff08;Strategy Pattern&#xff09;&#xff1a;将各个分支的逻辑封装成不同的策略类&#xff0c;然后通过一个上下文类来根据条件选择合…

JAVA主流日志框架梳理学习及使用

前言&#xff1a;目前市面上有挺多JAVA的日志框架&#xff0c;比如JUL(JDK自带的日志框架),Log4j,Logback,Log4j2等&#xff0c;有人可能有疑问说还有slf4j&#xff0c;不过slf4j不是一种日志框架的具体实现&#xff0c;而是一种日志门面&#xff08;日志门面可以理解为是一种统…

Python---多任务的介绍

1. 提问 利用现学知识能够让两个函数或者方法同时执行吗? 不能&#xff0c;因为之前所写的程序都是单任务的&#xff0c;也就是说一个函数或者方法执行完成另外一个函数或者方法才能执行&#xff0c;要想实现这种操作就需要使用多任务。 多任务的最大好处是充分利用CPU资源&…

Python---多进程的使用

1 导入进程包 #导入进程包 import multiprocessing2. Process进程类的说明 Process([group [, target [, name [, args [, kwargs]]]]]) group&#xff1a;指定进程组&#xff0c;目前只能使用Nonetarget&#xff1a;执行的目标任务名name&#xff1a;进程名字args&#xff…

3800个字彻底弄清cortex

3800个字彻底弄清cortex arm内核发展历史cortexM0系列芯片系统框图通用寄存器m0特殊寄存器m3/m4/m7特殊寄存器 MSP和PSPxPSRPRIMASKCONTROLFAULTMASKBASEPRI 栈空间操作异常和中断 系统异常 NVIC可嵌套向量中断控制器系统操作寄存器 NVIC寄存器系统控制块SCB寄存器SysTick寄存…

如何用 Cargo 管理 Rust 工程系列 丁

以下内容为本人的学习笔记&#xff0c;如需要转载&#xff0c;请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/PP9b5cSNd-7IqgNovcrB0A 优化输出 前面已经对 cargo package 工程编译输出了好多遍&#xff0c;发现编译结果打印的信息都包含了这个 unoptimize…

黑马React:基础拓展

黑马React: D10-基础拓展 Date: December 18, 2023 useReducer 基础使用 作用: 让 React 管理多个相对关联的状态数据 补充&#xff1a;和useState的作用类似&#xff0c;用来管理相对复杂的状态数据 **特点&#xff1a;**useReducer返回值为一个数组, 可以解构处数值stat…

C++共享和保护——(4)保护共享数据

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 一滴汗珠万粒粮&#xff0c;万粒汗珠谷…

【04】GeoScene导出海图或者电子航道图000数据成果

1创建一个带有覆盖面和定义的产品 如果你没有已存在的S-57数据&#xff0c;你可以通过捕捉新的产品覆盖范围&#xff08;多边形产品范围&#xff09;及其所需的产品定义信息&#xff08;产品元数据&#xff09;来为新产品创建基础。 注&#xff1a; 如果你已经有一个S-57数据…

js多图合成一张图

具体思路 先设置画布的宽高&#xff0c;再将每个图片整理成一个对象的数组通过某个方法传出合成后的base64 &#xff08;1&#xff09;、创建一个画布的类&#xff0c;他的属性是canvas虚拟dom和ctx &#xff08;2&#xff09;、构造器初始化convas对象、ctx、convas的宽高 …

【NI-RIO入门】使用LabVIEW进行数据采集测量

于ni kb摘录 选择合适的编程模式 CompactRIO系统具有至少两个用户可选模式。某些CompactRIO型号具有附加的用户可选模式&#xff0c;可以在实时NI-DAQmx中进行编程。请参考本文以判断您的CompactRIO是否能够使用实时NI-DAQmx。将目标添加到项目后&#xff0c;将提示您选择要使…

可以读通讯稿的组数

说在前面 &#x1f388;不知道大家对于算法的学习是一个怎样的心态呢&#xff1f;为了面试还是因为兴趣&#xff1f;不管是出于什么原因&#xff0c;算法学习需要持续保持。 题目描述 校运动会上&#xff0c;所有参赛同学身上都贴有他的参赛号码。某班参赛同学的号码记于数组 …

【《漫画算法》笔记】位图算法

问题描述 现有一个商店的数据库&#xff0c;它存储了很多顾客的信息&#xff08;如&#xff1a;姓名、年龄、身高、体重、职业等等&#xff0c;总之很多项&#xff09;。 如果想要筛选出“年龄大于25&#xff0c;且身高大于170&#xff0c;且体重大于130&#xff0c;且职业是程…