码迷,mamicode.com
首页 > 其他好文 > 详细

322. 零钱兑换

时间:2021-04-16 11:58:54      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:ble   css   for   不可   class   ESS   mount   etc   change   

1.状态定义

dp[i]代表凑齐总价值 i 需要的最少硬币个数;

2.状态转移方程

 for(int coin : coins)
         dp[i] = Math.min(dp[i], dp[i - coin] + 1);
class Solution {
    public int coinChange(int[] coins, int amount) {
        int[]dp = new int[amount + 1];
        //不可能用到amount+1个硬币,所以用它初始化数组
        Arrays.fill(dp, amount + 1);
        dp[0] = 0;
        for(int i = 1; i <= amount; i++){
            for(int coin : coins)
                if (i - coin >= 0)
                    dp[i] = Math.min(dp[i], dp[i - coin] + 1);
        }

        //dp[amount]最开始被初始化为amount+1了,还为此值则代表无法变动
        if (dp[amount] == amount + 1) {
            dp[amount] = -1;
        }
        return dp[amount];
    }
}

 

322. 零钱兑换

标签:ble   css   for   不可   class   ESS   mount   etc   change   

原文地址:https://www.cnblogs.com/deerlet/p/14663867.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!