322. Coin Change LeetCode

題意:給出硬幣的種類和要換的錢,最少可以用多少個硬幣去換,不能返回-1。
題解:dp,類似揹包的dp,dp[i]表示換成i元的時候最少要多少個硬幣。
dp[v] = min(dp[v],dp[v -coins[i]] + 1);

class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        int n = coins.size();
        int dp[amount + 1];
        memset(dp,0x3f,sizeof(dp));
        dp[0] = 0;
        for(int i = 0; i < n; i++)
            for(int v = coins[i]; v <= amount; v++)
                dp[v] = min(dp[v - coins[i]] + 1,dp[v]);
        if(dp[amount] != 0x3f3f3f3f) return dp[amount];
        else return -1;
    }
};
發佈了301 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章