代码随想录算法训练营19期第44天

完全背包 

视频讲解:带你学透完全背包问题! 和 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分钟

你可能感兴趣的:(算法,leetcode)