随笔分类 -  【数据结构与算法】动态规划

摘要:有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。 01背包和完全背包唯一不同就是体现在遍 阅读全文
posted @ 2021-02-05 19:30 不妨不妨,来日方长 阅读(1537) 评论(0) 推荐(1) 编辑
摘要:有N件物品和一个最多能被重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 背包问题,最难的就是初始化和遍历顺序! 二维dp数组01背包 // 0-1背包问题 // 二维dp数组 // n个物品 背包 阅读全文
posted @ 2021-02-05 18:47 不妨不妨,来日方长 阅读(585) 评论(0) 推荐(0) 编辑
摘要:class Solution { public: bool canPartition(vector<int>& nums) { // 动态规划解法,将nums求和,背包容量是一半,物品就是nums里的所有元素看能不能刚好凑出来 int sum = 0; for (int num : nums) su 阅读全文
posted @ 2021-02-03 20:24 不妨不妨,来日方长 阅读(60) 评论(0) 推荐(0) 编辑
摘要:理论学习笔记: 动态规划问题的一般形式就是求最值。 求解动态规划的核心问题是穷举。因为要求最值,肯定要把所有可行的答案都穷举出来,然后在其中找最值。 动态规划的穷举有点特别,因为这类问题都存在重叠子问题,如果暴力穷举的话效率会极其低下,所以需要 备忘录 或者 DP table 来优化穷举过程,避免不 阅读全文
posted @ 2021-02-03 19:50 不妨不妨,来日方长 阅读(300) 评论(0) 推荐(0) 编辑