322. 零錢兌換(Leetcode--多重無限揹包)

給定不同面額的硬幣 coins 和一個總金額 amount。編寫一個函數來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 -1。

示例 1:

輸入: coins = [1, 2, 5], amount = 11
輸出: 3 
解釋: 11 = 5 + 5 + 1
示例 2:

輸入: coins = [2], amount = 3
輸出: -1

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/coin-change
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

 

class Solution {
public:
	int coinChange(vector<int>& coins, int amount) {
		vector<int>DP(amount + 1, INF);
		DP[0] = 0;
		for (int i = 0; i < coins.size(); ++i)
		{
			for (int j = coins[i]; j < amount + 1; ++j)
			{
				DP[j] = min(DP[j], DP[j - coins[i]] + 1);
			}
		}
		return DP[amount] != INF ? DP[amount] : -1;
	}
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章