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

携带研究材料

携带研究材料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;
}
相关推荐
yi01114 分钟前
LeetCode 134 加油站:从 双循环暴力 演变到 贪心
linux·算法·leetcode
sogw-三叶草️26 分钟前
LeetCode 989. 数组形式的整数加法
数据结构·算法
维克兜率天1 小时前
【维克】均值回归:跌多了会涨,涨多了会跌
开发语言·笔记·python·算法·均值算法·回归·量化
yi0111 小时前
DAY 14: LeetCode 394. 字符串解码|递归和栈到底怎么处理嵌套?
数据结构·笔记·python·算法·leetcode
P.D.Wei2 小时前
[Leetcode 1614] 括号的最大嵌套深度
算法·leetcode·职场和发展
红姐跨境书2 小时前
AI 的底层逻辑:从数据、算法到智能的本质
人工智能·算法
繁华的地方不一定留下你的脚印2 小时前
C++ 算法与 ranges:用 find_if、transform 写清数据处理意图
开发语言·c++·算法
青山是哪个青山2 小时前
LeetCode 64:最小路径和
算法
blxr_2 小时前
力扣hot100寻找重复数https://leetcode.cn/problems/find-the-duplicate-number/
算法·leetcode·职场和发展
政企项目老覃2 小时前
金融医疗数据脱敏与隐私计算:从字段打码到联邦建模的落地复盘
程序人生·算法·金融·数据分析