关于动态规划【力扣322.零钱兑换的理解】

一、 数组的初始化

因为本题求的是凑足总额所需的最少硬币个数,所以dp数组里的每个元素都初始化为int的最大值

二、两种特殊情况

1、当凑足总额为0时,所需的最少硬币个数是0

2、当凑不足总额时,返回-1

三、遍历顺序

因为本题求的是凑足总额所需的最少硬币个数,所以凑成的方式可以是组合数也可以是排列数,两种方式都不影响最少个数的计算。所以遍历顺序可以是先遍历物品(求组合数)也可以是先遍历背包(求排列数)

四、递推公式

1、在写递推公式之前要先判断要凑成总额j-coins[i]所需的最少个数,是否是初始化时的值(即int的最大值INT_MAX)。因为int最大值是 2147483647,下面的递推公式加1就超过了,所以如果不是最大值才进行递推公式的计算,为了防止整数溢出。

2、递推公式dp[j] = min(dp[j-coins[i]]+1,dp[j]);的含义:在凑出j-coins[i]的基础上,再加一个值为coins[i]的硬币数,就凑出总额j所需硬币的最少个数;遍历所有硬币,取硬币个数最少的那个方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值