変更取引所(LeetCode 322)

問題の意味

様々な宗派のコインの適切な数、Couchuを指定された少なくともコインお金を使用する方法

思考

動的計画問題解決を使用してこの問題。現在の状態は唯一の通貨の種類に関連し、それは線形ダイナミックプログラミングであります

ステータス定義:
DP [I]:コインDP [i]のために必要なI Couchuドル最小数

状態遷移式:
DP [I] =分(DP [I - J]、Jの値がコインIS)

初期状態:
DP [0] = 0

コード

class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        if(amount == 0)
        {
            return 0;
        }
        vector<int> dp(amount+1, INT_MAX);
        dp[0] = 0;

        for(int i = 1; i <= amount; i++)
        {
            for(auto value : coins)
            {
                if(i - value >= 0)
                {
                    dp[i] = min(dp[i], dp[i-value]);
                }
                
            }
            if(dp[i] != INT_MAX)
                dp[i] += 1;
        }
        if(dp[amount] == INT_MAX)
            return -1;
        return dp[amount];

    }
};
// dp[i] : 凑齐i块钱,所需的硬币最小数量为dp[i]
// dp[i] = min(dp[i-j], j is the value of coins) + 1
// dp[0] = 0

おすすめ

転載: www.cnblogs.com/arcpii/p/12533838.html