完全背包
视频讲解:带你学透完全背包问题! 和 01背包有什么差别?遍历顺序上有什么讲究?_哔哩哔哩_bilibili
https://programmercarl.com/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80%E5%AE%8C%E5%85%A8%E8%83%8C%E5%8C%85.html
初步思路:动态规划。
总结:
完全背包和01背包问题唯一不同的地方就是,每种物品有无限件
完全背包的物品是可以添加多次的,所以要从小到大去遍历背包容量
完全背包中,对于一维dp数组来说,其实两个for循环嵌套顺序是无所谓
用时:45分钟
518. 零钱兑换 II
视频讲解:动态规划之完全背包,装满背包有多少种方法?组合与排列有讲究!| LeetCode:518.零钱兑换II_哔哩哔哩_bilibili
代码随想录
初步思路:动态规划。
总结:套用完全背包
dp[j]:凑成总金额j的货币组合数为dp[j]。
递推公式:dp[j] += dp[j - coins[i]];
如果求组合数就是外层for循环遍历物品,内层for遍历背包。
如果求排列数就是外层for遍历背包,内层for循环遍历物品。
用时:45分钟
377. 组合总和 Ⅳ
视频讲解:动态规划之完全背包,装满背包有几种方法?求排列数?| LeetCode:377.组合总和IV_哔哩哔哩_bilibili
代码随想录
初步思路:动态规划。
总结:套用完全背包
dp[i]: 凑成目标正整数为i的排列个数为dp[i]
递推公式:dp[i] += dp[i - nums[j]];
target(背包)放在外循环,将nums(物品)放在内循环,内循环从前到后遍历。
用时:45分钟