Coin Change - leetcode 322号题目个人题解
来源:互联网 发布:上海淘宝拍摄基地 编辑:程序博客网 时间:2024/05/16 15:22
题目要求
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
return 3
(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.
解题思路
使用一个一维数组来解决这个问题,数组cnt[i]
表示组成i元最少要使用多少枚硬币。如果cnt[i]
的值是65535的话,说明所给的硬币不能组成元。于是我们可以得到状态转移方程:
cnt[i] = min(cnt[i],cnt[i-coins[0]]+1,cnt[i-coins[1]]+1,...,cnt[i-coins[n]]+1)
代码实现如下:
代码实现
class Solution {public:int coinChange(vector<int>& coins, int amount) { if(amount < 0) return -1; int cnt[10000]; for(int i = 0;i<10000;i++) cnt[i] = 65535; cnt[0] = 0; for(int i=1; i<=amount; ++i) { for(int j=0; j<coins.size(); ++j) { if(i>=coins[j]) { cnt[i] = min(cnt[i], cnt[i-coins[j]] + 1); } } } if(cnt[amount]!=65535) return cnt[amount]; else return -1;}};
复杂度分析
该算法的复杂度应该是O(n^2)的。
0 0
- Coin Change - leetcode 322号题目个人题解
- [LeetCode 322] Coin Change
- leetcode 322 Coin Change
- 【LeetCode-322】Coin Change
- 【LeetCode-322】Coin Change
- (LeetCode 322) Coin Change
- 322 LeetCode Coin Change
- LeetCode 322 Coin Change
- Leetcode (322) Coin Change
- Leetcode 322, Coin Change
- LeetCode 322 Coin Change
- LeetCode 322 Coin Change
- LeetCode.322 Coin Change
- Leetcode题解(Week 7):322. Coin Change
- [Leetcode] #322 Coin Change (DP)
- 每周LeetCode算法题(十一) 题目: 322. Coin Change
- LeetCode 322 Coin Change (完全背包)
- leetcode Coin Change
- 数据流中的中位数
- hibernate注解无法在数据库自动生成表的部分可能问题
- 2015年沈阳区域赛-重现赛hdu 5512 gcd 博弈
- 热传导方程的差分格式原理与matlab实现
- 用文件编写通信录
- Coin Change - leetcode 322号题目个人题解
- Hibernate 菜鸟教程 8 复合主键
- Codeforces738C-Road to Cinema(二分答案+贪心)
- 第四十四天学习笔记
- 记NOIP2016
- 权值
- Hiho 125 GeoHash一·编码解码
- 为什么static成员必须在类外初始化,而不能在类的头文件中初始化
- codeforces - 738B - Spotlights (瞎搞)