背包型动态规划——零钱兑换
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。
你可以认为每种硬币的数量是无限的。
示例:
输入:coins = [1, 2, 5], amount = 11
输出:3
解释:11 = 5 + 5 + 1
示例 2:提示:1 <= coins.length <= 12
1 <= coins[i] <= 231 - 1
0 <= amount <= 10的四次方
1、题目分析
这个题目就是典型的背包问题6的应用。
2、代码实现
import numpy as np
class Solution:def coinChange(self, coins: List[int], amount: int) -> int:dp = [10000 for i in range(amount+1)]dp[0]=0for i in range(amount+1):for j in coins:if i>=j and dp[i-j]!=10000:dp[i]=min(dp[i],dp[i-j]+1)if dp[amount]==10000:return -1else:return dp[amount]
背包型动态规划——零钱兑换相关推荐
- LeetCode刷题复盘笔记—一文搞懂完全背包之322. 零钱兑换问题(动态规划系列第十四篇)
今日主要总结一下动态规划完全背包的一道题目,322. 零钱兑换 题目:322. 零钱兑换 Leetcode题目地址 题目描述: 给你一个整数数组 coins ,表示不同面额的硬币:以及一个整数 amo ...
- 【算法】动态规划 ④ ( 动态规划分类 | 坐标型动态规划 | 前缀划分型动态规划 | 前缀匹配型动态规划 | 区间型动态规划 | 背包型动态规划 )
文章目录 一.动态规划场景 二.动态规划分类 1.坐标型动态规划 2.前缀划分型动态规划 3.前缀匹配型动态规划 4.区间型动态规划 5.背包型动态规划 一.动态规划场景 动态规划 动态规划使用场景 ...
- 【leetcode题解——动态规划之完全背包】518.零钱兑换II(python版本详解+表格+dp五部曲)
518. 零钱兑换 II 重点: 本题求组合数,而非排列数. 例如示例: 5 = 2 + 2 + 1 5 = 2 + 1 + 2 这是一种组合,都是 2 2 1,而(2,2,1)(2,1,2)为两种排 ...
- 动态规划——零钱兑换(Leetcode 322)
题目选自Leetcode 322.零钱兑换 想必大家看一眼就明白了(bushi),这就是动态规划的背包问题~ 算法思想 那么,既然知道了这是个动态规划问题,就要思考如何列出正确的状态转移方程? 1.确 ...
- 动态规划——零钱兑换问题
零钱兑换问题 I 1.题目:力扣原题 2.分析 (1)结合我们之前分析的(动态规划解决背包问题),这里硬币有无限个对应完全背包问题.但又存在一点区别:纯完全背包是能否凑成总的金额,本题是要求凑成总金额 ...
- 【算法题目】DFS BFS 动态规划 零钱兑换 Python
322. 零钱兑换 给你一个整数数组 coins ,表示不同面额的硬币:以及一个整数 amount ,表示总金额.计算并返回可以凑成总金额所需的 最少的硬币个数 .如果没有任何一种硬币组合能组成总金额 ...
- Day 44 | 完全背包理论基础 518. 零钱兑换 II 377. 组合总和 Ⅳ
完全背包理论基础 完全背包与01背包的区别在于:完全背包同一物品可装多次,而01背包每个物品只能装一次. 因此遍历容量时,从前向后遍历即可! 关于遍历顺序,也与01背包有差别,01背包一维数组只能先遍 ...
- python换零钱_python动态规划-零钱兑换
零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数. 如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: c ...
- 刷题第45, 46天 | 70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数、139.单词拆分
70. Climbing Stairs 题目链接:70. Climbing Stairs 思路链接:代码随想录动态规划-爬楼梯(进阶) 思路 思路 Code class Solution {publi ...
最新文章
- Spring Boot(四):利用devtools实现热部署,改动代码自动生效
- PAT甲级1114 Family Property:[C++题解]结构体、并查集、测试点3、4、5有问题的进来!!
- Android通过Scheme协议打开APP界面
- c++11 chrono
- NS2相关学习——完成一个新协议(3)
- VS2012+WDK7600.16385.1 驱动环境配置(模板导出)
- 64位装32位oracle软件,在64位linux下安装32位oracle软件
- recyclervie刷新到底部_自定义RecyclerView添加HeaderView,添加FooterView,实现滑动到底部,加载更多...
- 从零基础入门Tensorflow2.0 ----四、14. tf.io.decode_csv的使用
- Android 四大组件学习之Service五
- Struts2 教程 流程
- 音频编解码G729 PCM
- iOS6.1完美越狱教程 一键越狱5分钟搞定
- php常用的终止语录,下定决心结束感情的话 终止感情的经典语录
- 创建动态的XML数据
- 小白Mac C/C++ for Visual Studio Code配置
- JS setTimeout和setInterval的区别
- Linux文件管理及用户命令
- 如何快速搭建一个简单图像搜索引擎
- 3D Game Programming Design:UI系统--Quest Log 公告牌
热门文章
- 袁腾飞老师的幽默历史课
- 自动驾驶汽车也要驾考了,能否上路在此一举,老司机看了考试内容惊呆了!
- microsoftfixitoffice官方清理软件_电脑卡?试试这几款电脑必备清理优化软件
- C++嵌套循环打印字母表
- 民宿类APP开发功能
- win7网络找不到局域网计算机名,教你操作win7系统局域网内找不到其他电脑的解决方法...
- 华为的5G到底有多厉害?
- 别忘了看,今年中秋月亮“瘦”了!网友扎心了:我还没瘦…
- Java调用有道翻译API包括APPID/密钥地址注册
- LINUX学习之进程进阶