算法笔记|Day33动态规划VI

☆☆☆☆☆leetcode 322. 零钱兑换

题目链接:leetcode 322. 零钱兑换

题目分析

1.dp数组含义:dp[j]表示凑足总额为j所需钱币的最少个数;
2.递推公式:dp[j]=Math.min(dp[j],dp[j-coins[i]]+1)(分别考虑取第i个钱币与不取第i个钱币得到的钱币个数取最小值);
3.初始化:dp[0]=0,其余dp[]=Integer.MAX_VALUE(凑足总额为j所需钱币的最少个数为0,为了不影响后续计算应赋其他值为最大值Integer.MAX_VALUE);
4.遍历顺序:顺序不影响结果(考虑排列或组合均可),先遍历货币或者背包都可以,背包一定是要正序遍历。

代码

class Solution {
   
    public int coinChange(int[] coins, int amount) {
   
        int dp[]=new int[amount+1];
        for(int i=1;i<dp.length;i++)
            dp[i]=Integer.MAX_VALUE;
        for(int i=0;i<coins.length;i++){
   
            for(int j
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值