给定不同面额的硬币 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]

背包型动态规划——零钱兑换相关推荐

  1. LeetCode刷题复盘笔记—一文搞懂完全背包之322. 零钱兑换问题(动态规划系列第十四篇)

    今日主要总结一下动态规划完全背包的一道题目,322. 零钱兑换 题目:322. 零钱兑换 Leetcode题目地址 题目描述: 给你一个整数数组 coins ,表示不同面额的硬币:以及一个整数 amo ...

  2. 【算法】动态规划 ④ ( 动态规划分类 | 坐标型动态规划 | 前缀划分型动态规划 | 前缀匹配型动态规划 | 区间型动态规划 | 背包型动态规划 )

    文章目录 一.动态规划场景 二.动态规划分类 1.坐标型动态规划 2.前缀划分型动态规划 3.前缀匹配型动态规划 4.区间型动态规划 5.背包型动态规划 一.动态规划场景 动态规划 动态规划使用场景 ...

  3. 【leetcode题解——动态规划之完全背包】518.零钱兑换II(python版本详解+表格+dp五部曲)

    518. 零钱兑换 II 重点: 本题求组合数,而非排列数. 例如示例: 5 = 2 + 2 + 1 5 = 2 + 1 + 2 这是一种组合,都是 2 2 1,而(2,2,1)(2,1,2)为两种排 ...

  4. 动态规划——零钱兑换(Leetcode 322)

    题目选自Leetcode 322.零钱兑换 想必大家看一眼就明白了(bushi),这就是动态规划的背包问题~ 算法思想 那么,既然知道了这是个动态规划问题,就要思考如何列出正确的状态转移方程? 1.确 ...

  5. 动态规划——零钱兑换问题

    零钱兑换问题 I 1.题目:力扣原题 2.分析 (1)结合我们之前分析的(动态规划解决背包问题),这里硬币有无限个对应完全背包问题.但又存在一点区别:纯完全背包是能否凑成总的金额,本题是要求凑成总金额 ...

  6. 【算法题目】DFS BFS 动态规划 零钱兑换 Python

    322. 零钱兑换 给你一个整数数组 coins ,表示不同面额的硬币:以及一个整数 amount ,表示总金额.计算并返回可以凑成总金额所需的 最少的硬币个数 .如果没有任何一种硬币组合能组成总金额 ...

  7. Day 44 | 完全背包理论基础 518. 零钱兑换 II 377. 组合总和 Ⅳ

    完全背包理论基础 完全背包与01背包的区别在于:完全背包同一物品可装多次,而01背包每个物品只能装一次. 因此遍历容量时,从前向后遍历即可! 关于遍历顺序,也与01背包有差别,01背包一维数组只能先遍 ...

  8. python换零钱_python动态规划-零钱兑换

    零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数. 如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: c ...

  9. 刷题第45, 46天 | 70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数、139.单词拆分

    70. Climbing Stairs 题目链接:70. Climbing Stairs 思路链接:代码随想录动态规划-爬楼梯(进阶) 思路 思路 Code class Solution {publi ...

最新文章

  1. Spring Boot(四):利用devtools实现热部署,改动代码自动生效
  2. PAT甲级1114 Family Property:[C++题解]结构体、并查集、测试点3、4、5有问题的进来!!
  3. Android通过Scheme协议打开APP界面
  4. c++11 chrono
  5. NS2相关学习——完成一个新协议(3)
  6. VS2012+WDK7600.16385.1 驱动环境配置(模板导出)
  7. 64位装32位oracle软件,在64位linux下安装32位oracle软件
  8. recyclervie刷新到底部_自定义RecyclerView添加HeaderView,添加FooterView,实现滑动到底部,加载更多...
  9. 从零基础入门Tensorflow2.0 ----四、14. tf.io.decode_csv的使用
  10. Android 四大组件学习之Service五
  11. Struts2 教程 流程
  12. 音频编解码G729 PCM
  13. iOS6.1完美越狱教程 一键越狱5分钟搞定
  14. php常用的终止语录,下定决心结束感情的话 终止感情的经典语录
  15. 创建动态的XML数据
  16. 小白Mac C/C++ for Visual Studio Code配置
  17. JS setTimeout和setInterval的区别
  18. Linux文件管理及用户命令
  19. 如何快速搭建一个简单图像搜索引擎
  20. 3D Game Programming Design:UI系统--Quest Log 公告牌

热门文章

  1. 袁腾飞老师的幽默历史课
  2. 自动驾驶汽车也要驾考了,能否上路在此一举,老司机看了考试内容惊呆了!
  3. microsoftfixitoffice官方清理软件_电脑卡?试试这几款电脑必备清理优化软件
  4. C++嵌套循环打印字母表
  5. 民宿类APP开发功能
  6. win7网络找不到局域网计算机名,教你操作win7系统局域网内找不到其他电脑的解决方法...
  7. 华为的5G到底有多厉害?
  8. 别忘了看,今年中秋月亮“瘦”了!网友扎心了:我还没瘦…
  9. Java调用有道翻译API包括APPID/密钥地址注册
  10. LINUX学习之进程进阶