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

携带研究材料

携带研究材料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;
}
相关推荐
大鱼>4 分钟前
因子挖掘+回测+RL交易:量化金融完整系统
人工智能·深度学习·算法·金融
c238562 小时前
《枚举算法 “翻译官”:用 enum class 给 “游游的礼盒” 算分》
c语言·c++·算法
noipp2 小时前
推荐题目:洛谷 P5843 [SCOI2012] Blinker 的噩梦
c语言·数据结构·c++·算法·游戏·洛谷·luogu
极客BIM工作室2 小时前
OpenCascade 倒角(Chamfer)算法完整逻辑解析
算法
冻柠檬飞冰走茶2 小时前
PTA基础编程题目集 7-20 打印九九口诀表(C语言实现)
c语言·开发语言·数据结构·算法
鱼子星_2 小时前
《算 · 法》题目解析篇(1):最近公共祖先问题,线段树,最长回文子序列
c++·算法·动态规划·递归
雾喔2 小时前
算法练习5
算法·代理模式
问商十三载2 小时前
RAG 检索召回越多越好?2026 信噪比模型深度解析
人工智能·算法·机器学习
额恩662 小时前
ResearchPilot 第三阶段总结报告
python·算法
Hi李耶3 小时前
【LeetCode】9-回文数
算法·leetcode·职场和发展