代码随想录训练营打卡Day37| 动态规划part05
完全背包:每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。
完全背包问题的一维数组情况 和 01背包的一位数组情况的区别:
01背包是逆向更新,为了避免物品重复使用;完全背包是正向更新;
518.零钱兑换II
题目链接:518.零钱兑换II
给你一个整数数组
coins表示不同面额的硬币,另给一个整数amount表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回
0。假设每一种面额的硬币有无限个。
题目数据保证结果符合 32 位带符号整数。
思路:返回的是组合数,所以递推公式为 += ,而不是 max;中间示例爆int了,代码思路是正确的。
377. 组合总和 Ⅳ
题目链接:377. 组合总和 Ⅳ
给你一个由 不同 整数组成的数组
nums,和一个目标整数target。请你从nums中找出并返回总和为target的元素组合的个数。题目数据保证答案符合 32 位整数范围。
思路:有序排列顺序不同认为是不同的组合,所以外层遍历容量,内层遍历物品;中间示例爆int了,代码思路是正确的。
70. 爬楼梯(进阶版)
题目链接:70. 爬楼梯(进阶版)
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬至多m (1 <= m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
思路:完全背包的应用,熟悉之后比较简单,注意初始化的操作和边界问题即可
