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

携带研究材料

携带研究材料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;
}
相关推荐
Gigavision3 小时前
基于BUAA-MIHR数据集的噪声解耦对比学习算法
人工智能·python·深度学习·算法
鹿角片ljp3 小时前
LeetCode 64:最小路径和复盘|二维 DP 与 ACM 模式完整写法
java·数据结构·算法
彧azz5 小时前
算法设计与分析:贪心与动态规划
数据结构·学习·算法·贪心算法·动态规划
Beyond_System|系统之外5 小时前
【学编程】Python基础编程题100道(21-60)
开发语言·python·算法
漂流瓶jz7 小时前
UVA-1442 洞穴 题解答案代码 算法竞赛入门经典第二版
c++·算法·题解·aoapc·算法竞赛入门经典·uva
叠层归一研究院9 小时前
基于极限自指的叠层归一宇宙结构理论——无元外部封闭系统的内生区分模型
人工智能·经验分享·算法·agi
Selvaggia10 小时前
Diffusion Model 的基本原理与模型架构
算法
wabs66611 小时前
关于二叉树【力扣572.另一棵树的子树的思考】
数据结构·c++·算法·leetcode·二叉树
hanlin0311 小时前
刷题笔记:力扣第41题-缺失的第一个正数
笔记·算法·leetcode
shehuiyuelaiyuehao12 小时前
算法50,分治归并,数组中的逆序对
java·算法