动态规划 完全背包问题 携带研究材料

携带研究材料

携带研究材料https://kamacoder.com/problempage.php?pid=1052)

学习记录自代码随想录

要点:1.完全背包问题中物品可以选无数次,所以相比于01背包问题,在遍历背包容量时需要正向遍历

cpp 复制代码
#include <iostream>
#include <vector>

using namespace std;

class Solution{
public:
    int max_value(vector<int>& weight, vector<int>& value, int n, int v){
        
        // 1.dp[j]代表背包容量为j时的最大价值为dp[j]
        vector<int> dp(v+1, 0);
        
        // 2.递推公式:dp[j] = max(dp[j], dp[j-weight[i]] + value[i])
        // 3.初始化为0同01背包
        // 4.遍历顺序因为物品可以选无数次,所以内层遍历背包容量时正向遍历
        for(int i = 0; i < n; i++){
            for(int j = weight[i]; j < v+1; j++){
                dp[j] = max(dp[j], dp[j-weight[i]] + value[i]);
            }
        }
        // 5.举例推导dp数组
        return dp[v];
    }
};

int main(){
    
    int N, V;
    cin >> N >> V;
    vector<int> weight(N);
    vector<int> value(N);
    
    for(int i = 0; i < N; i++){
        int wei, val;
        cin >> wei >> val;
        weight[i] = wei;
        value[i] = val;
    }
    
    Solution Solution;
    int result = Solution.max_value(weight, value, N, V);
    cout << result;
    return 0;
}
相关推荐
神威难绷泪13 分钟前
Linux应用软件编程:线程分离属性 互斥机制 同步机制 死锁
linux·开发语言·算法·线程
小星星闪亮登场31 分钟前
图论--最小生成树(内含二分图)
数据结构·算法·图论·迭代加深·图搜索算法
ZC跨境爬虫1 小时前
LeetCode 219. 存在重复元素 II(滑动窗口 + 哈希表详解)
算法·leetcode·散列表
吞下星星的少年·-·1 小时前
The 2025 ICPC Asia East Continent Online Contest (I) A题(模拟+贪心)
算法·贪心·模拟
小程序设计1 小时前
【机械设计】磁粉检测机器人的设计与验证
算法·机器人
Navigator_Z1 小时前
LeetCode //C - 1220. Count Vowels Permutation
c语言·算法·leetcode
吃好睡好便好2 小时前
判断函数的使用
学习·算法·matlab·生活·判断函数
2601_956121972 小时前
线性DP(入门)
c++·算法·动态规划
feilieren2 小时前
leetcode - 389. 找不同
算法·leetcode
挽星安2 小时前
2026/8/29
数据结构·算法