代码随想录算法训练营第四十五天|70. 爬楼梯(进阶)|322. 零钱兑换|279.完全平方数

一、70. 爬楼梯(进阶)

思想:这题很明显是完全背包的题目,并且由于121和211是两种方法,所以是有顺序的。从这两点的话我们可以确定遍历顺序是先背包然后物品,这里比较简单,物品只有两种(1和2)。所以我们只需要写出递归公式即可,由于前面已经做过种类问题,所以我们也有递归公式。最后是初始化,如果dp[0]初始为0,后面都为0,所以这里初始成1.

代码随想录算法训练营第四十五天|70. 爬楼梯(进阶)|322. 零钱兑换|279.完全平方数_第1张图片

 

二、322. 零钱兑换

思想:首先看题,硬币是无限的,可以知道是完全背包,又因为155和515是同一种凑钱方式,所以我们可以知道遍历顺序,先物品后背包,最后确定遍历公式,dp[j]是装满背包的最小物品个数,dp[j-i]+1是所有可能,所以我们将它取最小值即可。这里有一个很重要的细节便是初始化,由题可知,dp[0] = [0],但是其它的数怎么初始化,因为以前做过max的题,一般默认为0,所以我第一次做的时候也初始化为0,后面发现不对,因为它是min,如果初始化为0,0会覆盖比其大的值,所以我们需要赋一个很大的值。

代码随想录算法训练营第四十五天|70. 爬楼梯(进阶)|322. 零钱兑换|279.完全平方数_第2张图片

 三、279.完全平方数

思想:拿到这题其实发现就是和零钱兑换一样,只不过套了一个新的壳子,整体思路都是一样,这里就说一下自己不确定的点当时自己默认给了dp[0] =0 ,题目也没有给什么信息,但是为了后面递归也只有这样给,个人感觉还是不要太纠结。然后就是对初始的物品进行处理一下,让其里面全部为完全平方数即可。

代码随想录算法训练营第四十五天|70. 爬楼梯(进阶)|322. 零钱兑换|279.完全平方数_第3张图片 

你可能感兴趣的:(算法,动态规划,数据结构)