美文网首页动态规划
DP:给定硬币面值,以及总价钱,求利用最少硬币数保证达到总价钱,

DP:给定硬币面值,以及总价钱,求利用最少硬币数保证达到总价钱,

作者: 敲一手烂代码 | 来源:发表于2016-05-18 10:48 被阅读37次
    public static int coinChange(int[] coins, int amount) {
            if (coins==null||coins.length==0||amount<0) {
                return -1;
            }
            int[][] dp = new int[coins.length][amount+1];
            int max = Integer.MAX_VALUE;
            for (int i = 1; i < dp[0].length; i++) {
                dp[0][i] = max;
                if ((i-coins[0])>=0&&(dp[0][i-coins[0]]!=max)) {
                    dp[0][i] = dp[0][i-coins[0]]+1;
                }
            }
            for (int i = 1; i < dp.length; i++) {
                for (int j = 1; j <dp[0].length; j++) {
                    int temp = max;
                    if ((j-coins[i])>=0&&(dp[i][j-coins[i]]!=max)) {
    
                        temp = dp[i][j-coins[i]]+1;
                    }
                    dp[i][j] = Math.min(temp, dp[i-1][j]);
                }
            }
            return dp[coins.length-1][amount]!=max?dp[coins.length-1][amount]:-1;
        }
    

    相关文章

      网友评论

        本文标题:DP:给定硬币面值,以及总价钱,求利用最少硬币数保证达到总价钱,

        本文链接:https://www.haomeiwen.com/subject/wzqwrttx.html