首页 > 编程语言 > 详细

凑零钱算法-dp表 java实现

时间:2021-03-08 14:12:22      阅读:61      评论:0      收藏:0      [点我收藏+]
public int coinChange(int[] coins, int amount) {
        //初始化dp表
        int[] dp = new int[amount+1];
        //因为是求最小值,所以默认值是一个无穷大,对于本题,amount+1也是无穷大
        for (int i = 0; i < amount+1; i++) {
            dp[i]=amount+1;
        }
        dp[0]=0;
        
        //穷举所有潜在子问题,本题就是目标金额的子问题穷举
        for (int i = 0; i < dp.length; i++) {
            //每个子问题的可选列表
            for (int coin : coins) {
                //结束条件:目标金额-硬币面值
                if(i-coin<0) continue;
                //转移方程
                dp[i] = Math.min(dp[i], 1 + dp[i - coin]);
            }
        }
        return (dp[amount] == amount + 1) ? -1 : dp[amount];
    }

 

凑零钱算法-dp表 java实现

原文:https://www.cnblogs.com/karbon/p/14498630.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!