322. Coin Change(硬币找零)
来源:互联网 发布:dvp14ss11ti编程手册 编辑:程序博客网 时间:2024/06/06 06:59
322. Coin Change(硬币找零)
- Coin Change硬币找零
- 题目链接
- 题目描述
- 题目分析
- 方法动态规划
- 算法描述
- 方法动态规划
- 参考代码
题目链接
https://leetcode.com/problems/coin-change/description/
题目描述
You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return
-1
.Example 1:
coins =[1, 2, 5]
, amount =11
return3
(11 = 5 + 5 + 1)Example 2:
coins =[2]
, amount =3
return-1
.Note:
You may assume that you have an infinite number of each kind of coin.
题目分析
这道题是一道很典型的动态规划题目。对于给定的面额,若已知给定面额分别减去各种面额的硬币一个的最小组成方案,则易知此面额的最小组成方案。语言叙述起来不是很清楚,看状态转移方程就很清楚了:
设组成面额i
所需要的最小硬币数是nums[i]
nums[i] = min{ nums[i - coin[j]] } + 1
coin[j]这里是枚举所给的硬币面额
方法:动态规划
算法描述
- 建立
nums
数组,初始化nums[0] = 0
其余都是-1
- 从
1
开始到amount结束:
枚举硬币面额c:
若nums[i - c]有意义(即i - c >= 0 && nums[i - c] != -1
),判断能否更新nums[i]
的值(即nums[i] == -1 || (nums[i] != -1 && nums[i - c] + 1 < nums[i])``若能更新则更新为
nums[i - c] + 1“` - 最终答案是
nums[amount]
参考代码
class Solution {public: int coinChange(vector<int>& coins, int amount) { vector<int> nums(amount + 1, -1); nums[0] = 0; for (int i = 1; i <= amount; i++) for (auto c : coins) if (i - c >= 0 && nums[i - c] != -1) { if (nums[i] == -1) nums[i] = nums[i - c] + 1; else if (nums[i - c] + 1 < nums[i]) nums[i] = nums[i - c] + 1; } return nums[amount]; }};
- 322. Coin Change(硬币找零)
- Coin Change【硬币找零】
- uva674 - Coin Change(硬币找零)
- LeetCode 322. Coin Change(兑换硬币)
- 【解题报告】uva674_Coin Change(硬币找零, dp, 完全背包)
- Coin Change 2-硬币问题
- 硬币找零(coin.c/cpp/pas)
- leetcode 322. Coin Change-硬币交换|动态规划
- 动态规划之硬币兑换(Coin Change)
- 硬币找零(dp)
- UVa-674 - Coin Change 不同面值找零的方案数
- Geeks 面试题: Coin Change最大找零方案数
- 硬币找零(贪心算法)
- 硬币找零(动态规划)
- nyoj995硬币找零(dp)
- 硬币找零问题(Java)
- 硬币找零(完全背包)
- LeetCode 322. Coin Change(java medium)
- 缓存命中
- Spring入门介绍
- mvcc innodb
- 【Intellij Idea 插件从入门到深坑】系列目录
- Qaxobject类学习笔记
- 322. Coin Change(硬币找零)
- JME-java开发3D游戏
- 简单成绩管理系统,功能不全,前段时间的一个比赛题,当时是手写的。只想看能否自己写出来
- 你好CSDN!
- node.js
- Java 对象 == null
- 20171218开通博客留贴
- DirectX11笔记(十二)--Direct3D渲染8--EFFECTS
- 基因数据处理57之BWA-MEM运行single-end(1千万条100bp的reads)