当前位置:   article > 正文

动态规划学习:零钱兑换_动态规划零钱兑换

动态规划零钱兑换

一、零钱兑换问题I

  • 给定一组面额硬币,每组硬币可能有多个,给定一个总金额amount,求组成总金额所需的最少硬币数,若组不成返回-1

代码实现

package OneDaySuanFa;

import DataStructure.Array.Array;

import java.util.Arrays;

public class HuanChange {
    public static int huanchange(int[] coins,int amount){
        int n = coins.length;
        int[] dp = new int[amount+1];
        //dp[i]表示组成总金额i的最少硬币数
        Arrays.fill(dp,Integer.MAX_VALUE);
        dp[0] = 0;

        for (int i = 0; i < n; i++){
            for (int j = coins[i]; j <= amount; j++){
                if (dp[j-coins[i]] != Integer.MAX_VALUE){
                	//可以选择放或者不放
                    dp[j] = Math.min(dp[j-coins[i]] + 1,dp[j]);
                }
            }
        }

        if (dp[amount] == Integer.MAX_VALUE) return -1;
        return dp[amount];
    }

    public static void main(String[] args) {
        int[] coins = new int[]{1,2,5};
        System.out.println(huanchange(coins,20));
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

二、零钱兑换问题II

  • 给定一组面额硬币,每个硬币可能有多个,给定一个总金额amount,求组成amount一共有多少种组合,若组不成返回-1

代码实现

package OneDaySuanFa;

public class HuanChange2 {
    public static int huanchange2(int[] coins,int amount){
        int n = coins.length;
        int[] dp = new int[amount + 1];
        //dp[i]表示凑成总金额i有多少种方法
        dp[0] = 1; //凑成总金额0只有一种方法,即什么都不放

        for (int i = 0; i < n; i++){
            for (int j = coins[i]; j <= amount; j++){
                //可以选择不放或者放入
                //这里不放是因为硬币有多个,不放可能是已经放了一个的状态
                dp[j] = dp[j] + dp[j-coins[i]];
            }
        }

        return dp[amount];
    }

    public static void main(String[] args) {
        int[] coins = new int[]{1,2,5};
        int amount = 11;
        System.out.println(huanchange2(coins,amount));
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/243807
推荐阅读
相关标签
  

闽ICP备14008679号