零钱兑换二维dp实现(力扣--动态规划)

news2024/12/23 8:45:29

文章目录

      • 1.题目描述
      • 2.解题思路
      • 3.代码实现

1.题目描述

题目链接:零钱兑换
在这里插入图片描述

2.解题思路

1.确定二维dp[i][j]的含义:
dp[i][j] 前i个物品任取,装入容量为j的背包种,最少的硬币个数是dp[i][j]
2.确定递推公式:
dp[i][j] = min(dp[i-1][j], dp[i][j-coins[i]]+1)
dp[i-1][j]含义:不放入第i个元素的最少硬币硬币个数为dp[i-1][j]
dp[i][j-coins[i]]+1: 放入第i个元素的最少硬币个数为dp[i][j-coins[i]]+1
(因为你放入了第i个硬币,所以你的硬币个数要+1

3.代码实现

class Solution:
    def coinChange(self, coins: List[int], amount: int) -> int:
        # dp[i][j] 前i个元素任取,凑满容量为j的背包的最少硬币个数为dp[i][j] 最后求的是dp[len(coins)-1][amount]
        # 递推公式 dp[i][j] = min(dp[i-1][j], dp[i][j-coins[i]]+1)
        #1.定义dp
        dp = []
        for i in range(len(coins)):
            tmp = [float('inf')] * (amount+1)
            dp.append(tmp)


        #2.初始化行和列
        #2.1第一行概念:物品0装满容量为J的背包,需要的硬币个数为?
        #2.2第一列概念:物品i装入背包容量为0,需要的硬币个数为? 0
        for i in range(len(coins)):
            dp[i][0] = 0

        for j in range(coins[0], amount+1):
            if j % coins[0] == 0:
                dp[0][j] = (j // coins[0])

        # 3.遍历
        for i in range(1,len(coins)):
            for j in range(1, amount+1):
                if j - coins[i] < 0:
                    dp[i][j] = dp[i-1][j]
                else:
                    dp[i][j] = min(dp[i-1][j], dp[i][j-coins[i]]+1)

        if dp[-1][-1] != float('inf'):
            return dp[-1][-1]
        
        return -1

这里其他位置初始化无穷大,表示暂时没有方法凑成dp[i][j]

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

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

相关文章

【日语学习必备】5款超准实时翻译软件,让你的网课不再有障碍!

日语水平不过关&#xff0c;没办法实时听懂日语会议或日语网课内容怎么办&#xff1f; 两种方法&#xff01; 一、利用日语实时翻译软件&#xff0c;也就是所谓同声传译的方式实时将日语转换为中文 二、先将会议或网课等内容录制下来&#xff0c;再借助语音或视频翻译软件&am…

利士策分享,探索无界:心灵之旅,发现未知精彩

利士策分享&#xff0c;探索无界&#xff1a;心灵之旅&#xff0c;发现未知精彩 梦想的种子&#xff0c;在心田生根发芽 正如每一颗种子都蕴含着生命的奥秘&#xff0c;每个人心中那颗探索的种子&#xff0c;也藏着对未知世界的渴望与追求。它告诉我们&#xff0c;成长不仅仅…

Unite Shanghai 2024 技术专场 | Unity 6及未来规划:Unity引擎和服务路线图

在 2024 年 7 月 24 日的 Unite Shanghai 2024 技术专场演讲中&#xff0c;Unity 高级技术产品经理 Jeff Riesenmy 带来演讲 Unity 6 and Beyond: A Roadmap of Unity Engine and Services。作为本次 Unite 首场专题演讲&#xff0c;他介绍了 Unity 引擎的最新进展及其配套的工…

猫头虎分享:15种数码苹果16抢购攻略

猫头虎分享&#xff1a;15种数码苹果16抢购攻略 大家好&#xff0c;我是猫头虎&#xff01;今晚8点&#xff0c;就是大家期待已久的苹果16抢购时刻&#xff0c;你准备好了吗&#xff1f;为了帮助大家顺利抢到心仪的机型&#xff0c;我精心准备了15种抢购指南&#xff0c;总有一…

[C#学习笔记]LINQ

视频地址&#xff1a;LINQ入门示例及新手常犯的错误_哔哩哔哩_bilibili 强烈推荐学习C#和WPF的朋友关注此UP&#xff0c;知识点巨多&#xff0c;讲解透彻&#xff01; 一、基本概念 语言集成查询(Language-Intergrated Query) 常见用途 .Net原生集合(List&#xff0c;Arra…

“勇者斗恶龙”即将上演,乐道L60剑指Model Y

文/王俣祺 导语&#xff1a;只要说到“二十多万”“大品牌”“纯电SUV”这一系列关键词&#xff0c;特斯拉Model Y一定是绕不开的车型&#xff0c;从近几年的销量来看&#xff0c;目前市面上很难有车型能“硬刚”。不过既然有“恶龙”就会有“勇者”&#xff0c;蔚来子品牌乐道…

“薅羊毛”时间到, 容声以旧换新“钜惠”升级

9月13日&#xff0c;由佛山市商务局、顺德区人民政府指导&#xff0c;海信家电集团主办的以旧换新佛山发布活动启幕。 海信家电&#xff08;SZ 000921&#xff0c;HK 00921&#xff09;旗下容声冰箱叠加国家以旧换新补贴&#xff0c;把“以旧换新”升级到“品质换新”&#xf…

汤臣倍健业绩大幅下滑:经销商减少131家,销售费用转化不达预期

《港湾商业观察》廖紫雯 在膳食营养补充剂&#xff08;VDS&#xff09;行业竞争加剧的情况下&#xff0c;日前&#xff0c;汤臣倍健股份有限公司&#xff08;以下简称&#xff1a;汤臣倍健&#xff0c;300146.SZ&#xff09;披露2024年半年报业绩情况。上半年&#xff0c;公司…

爱普生相机SD卡格式化后数据恢复指南

我借了朋友的‌爱普生相机&#xff0c;想查看一下内存&#xff0c;哎呀&#xff0c;一不小心按错了&#xff0c;竟然执行了格式化操作&#xff0c;这可真是太让人郁闷了&#xff0c;这还有机会挽救数据吗&#xff1f;心塞&#xff0c;求帮助&#xff01; 随着数码摄影的普及&am…

GUI编程10:窗口监听事件

视频链接&#xff1a;12、窗口监听事件_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1DJ411B75F?p12&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.使用成员内部类方式实现窗口监听 ackage com.yundait.lesson03;import java.awt.*; import java.awt.event.Win…

学习之git的团队协作

git团队协作 一 团队内协作 生成SSH公钥私钥 一&#xff08;跨团队协作&#xff09;

java的ReentrantLock原理

示例代码如下&#xff0c;主要包括两个方法&#xff1a; public static void main(String[] args) throws InterruptedException {Lock lock new ReentrantLock();lock.lock();lock.unlock();}双向链表初始状态&#xff1a; 双向链表从尾节点添加阻塞的节点&#xff1a; 读源…

WebLogic 笔记汇总

WebLogic 笔记汇总 一、weblogic安装 1、创建用户和用户组 groupadd weblogicuseradd -g weblogic weblogic # 添加用户,并用-g参数来制定 web用户组passwd weblogic # passwd命令修改密码# 在文件末尾增加以下内容 cat >>/etc/security/limits.conf<<EOF web…

小程序开发设计-第一个小程序:注册小程序开发账号②

注册小程序开发账号整体流程&#xff1a; 1.点击注册按钮&#xff1a; 使用浏览器打开微信公众平台网址&#xff0c;点击右上角的“立即注册”即可进入到小程序开发账号的注册流程&#xff0c;主要流程截图如下&#xff1a; 2.选择注册账号的类型&#xff1a; 3.填好账号信息&…

天空卫士项目荣获“2024 IDC 中国20大杰出安全项目 ”奖项 ,实力见证安全守护

9月11日&#xff0c; IDC在上海圆满举办安全风险管控峰会&#xff0c;并现场官宣“2024 IDC中国20大杰出安全项目(CSO20) ”和“2024 IDC中国 CSO名人堂 (十大人物) ” 奖项名单。联通软研院申报的联通邮件系统安全合规建设项目被评为“2024 IDC中国20大杰出安全项目(CSO20) ”…

【Qt 编程入门】如何用 Qt 实现一个基本的计算器

前言 QT中实现一个简单的计算器是一个比较好的练手项目&#xff0c;下面是源码&#xff1a; Calculator计算器 设计界面 待实现的界面主要包含两个部分&#xff1a; 输入输出栏用户点击的按钮 输入输出栏通过QLabel类实现&#xff0c;而用户点击按钮通过QPushButton或QToo…

3分钟带你快速了解 Java 接口

我醉欲眠卿且去 明朝有意抱琴来 目录 接口的概念 定义接口 接口格式 接口的特性 &#xff08;1&#xff09;接口不能直接创建对象 &#xff08;2&#xff09;接口不能用 final 修饰 &#xff08;3&#xff09;接口中定义的变量 &#xff08;4&#xff09;接口中定义的方法 接…

Visual Studio Installer 2022 安装提示正在提取文件 进度条不动 0B每秒

Visual Studio Installer 稍等片刻...正在提取文件 进度条不动 0B每秒 一段时间后提示 循环下载安装文件 无法下载安装文件。请检查Internet 连接&#xff0c;然后重试 打开vs2017 或者vs2019或者vs2022的安装程序(visual studio installer)时&#xff0c;下载进度条不动&…

【C++】认识C++(前言)

&#x1f984;个人主页:小米里的大麦-CSDN博客 &#x1f38f;所属专栏:C_小米里的大麦的博客-CSDN博客 &#x1f381;代码托管:C: 探索C编程精髓&#xff0c;打造高效代码仓库 (gitee.com) ⚙️操作环境:Visual Studio 2022 目录 一、本节概述 二、什么是C 三、C发展史 四…

为了准确计算延迟退休时间,我做了一个退休年龄计算器

延迟退休计算方法 原本退休分为三种情况&#xff0c;男性&#xff0c;女工人&#xff0c;女干部 男性&#xff1a;退休年龄为60岁。女干部&#xff1a;退休年龄为55岁。女工人&#xff1a;退休年龄为50岁。 现在延迟以后&#xff08;根据2024年9月13日公布的规则&#xff09…