Coin Change
来源:互联网 发布:2015十大网络用语 编辑:程序博客网 时间:2024/06/05 23:56
题目描述:
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.
使用动态规划,状态dp[i]表示凑够钱数i最少需要的coins数量。
状态转移方程为:
(1) dp[i] = 0 i=0;
(2) dp[i] = -1 i<min_coin(即i小于最小面值的硬币)
(3) dp[i] = min(1+dp[i-coins[j]]) i>=coins[j]
AC代码如下:
class Solution{public:int coinChange(vector<int>& coins, int amount){if (coins.size() == 0 || amount <= 0) return 0;sort(coins.begin(), coins.end());vector<int> dp(amount+1, -1);dp[0] = 0;int min_coin = coins[0];if (amount < min_coin) return -1;for (int i = min_coin; i <= amount; ++i){int local_ans = INT_MAX;for (int j = coins.size() - 1; j >= 0; --j){if (i >= coins[j]){if (dp[i - coins[j]] != -1){local_ans = min(local_ans, 1 + dp[i - coins[j]]);}}}if (local_ans == INT_MAX) dp[i] = -1;else dp[i] = local_ans;}return dp[amount];}};
0 0
- Coin Change
- Coin Change
- Coin change
- Coin Change
- Coin change
- Coin Change
- Coin Change
- Coin Change
- Coin Change
- Coin Change
- Coin Change
- Coin Change
- Coin Change
- Coin Change
- Coin Change
- Coin Change
- coin change
- Coin Change
- C/C++头文件一览
- LibeventBook 节选翻译
- session入mysql
- koa学习2——koa入门
- 利用docker开启持续交付之路
- Coin Change
- HIVE配置文件
- jedis基本介绍
- STK和Matlab编程规范
- php 写session
- 234. Palindrome Linked List
- Android 开发之旅——Android Studio2 安装 GO!
- synchronized同步机制的应用
- string::substr