首页 > 其他分享 >背包九讲练习题

背包九讲练习题

时间:2025-01-12 21:32:54浏览次数:1  
标签:练习题 std 背包 dp2 dp1 九讲 int 物品

01背包

有N种物品和一个容量为V的背包,每种物品只有1个,第i种物品的体积为v[i],价值为w[i]。问将哪些物品装入背包,可使总体积不超过背包容量,且总价值最大,输出最大值。
0<N,V<=1000; 0<v[i],w[i]<=1000

#include <bits/stdc++.h>
int main() {
    int N, V;
    std::cin >> N >> V;
    std::vector<int> v(N), w(N);
    for (int i = 0; i < N; i++) {
        std::cin >> v[i] >> w[i];
    }
    std::vector<int> dp1(V + 1), dp2(V + 1);
    for (int i = 1; i <= N; i++) {
        for (int j = 0; j <= V; j++) {
            dp2[j] = dp1[j];
            if (j >= v[i-1]) {
                dp2[j] = std::max(dp2[j], w[i-1] + dp1[j-v[i-1]]);
            }
        }
        std::swap(dp1, dp2);
    }
    std::cout << dp1[V] << "\n";
    return 0;
}

完全背包

有N种物品和一个容量为V的背包,每种物品有无限多个,第i种物品的体积为v[i],价值为w[i]。问将哪些物品装入背包,可使总体积不超过背包容量,且总价值最大,输出最大值。
0<N,V<=1000; 0<v[i],w[i]<=1000

#include <bits/stdc++.h>
int main() {
    int N, V;
    std::cin >> N >> V;
    std::vector<int> v(N), w(N);
    for (int i = 0; i < N; i++) {
        std::cin >> v[i] >> w[i];
    }
    std::vector<int> dp1(V + 1), dp2(V + 1);
    for (int i = 1; i <= N; i++) {
        for (int j = 0; j <= V; j++) {
            dp2[j] = dp1[j];
            if (j >= v[i-1]) {
                dp2[j] = std::max(dp2[j], w[i-1] + dp2[j-v[i-1]]);
            }
        }
        std::swap(dp1, dp2);
    }
    std::cout << dp1[V] << "\n";
    return 0;
}

标签:练习题,std,背包,dp2,dp1,九讲,int,物品
From: https://www.cnblogs.com/chenfy27/p/18667356

相关文章

  • 01背包【模板】
    https://www.luogu.com.cn/problem/P2871#include<bits/stdc++.h>#definelcp<<1#definercp<<1|1#defineINF2e9usingnamespacestd;#defineendl'\n'usingll=longlong;usingpii=pair<ll,ll>;constdoublePI=a......
  • 2025华为OD机试已正式切换E卷,E卷新题正在火热更新中,支持在线OJ练习题目,三种语言解答,每
    文章目录......
  • 分组背包+四位
    https://ac.nowcoder.com/acm/contest/99784/E#include<bits/stdc++.h>#definelcp<<1#definercp<<1|1#defineINF2e9usingnamespacestd;#defineendl'\n'usingll=longlong;usingpii=pair<ll,ll>;constdoubleP......
  • 我在广州学 Mysql 系列——与索引相关的练习题
    ℹ️大家好,我是练小杰,今天星期二啦,还有三天就是星期五了,为了美好生活奋斗吧朋友们!本文将学习MYSQL中数据表内容的索引相关练习题目~~复习:......
  • 代码随想录训练营第三十七天| 完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ 70. 爬楼
    完全背包理论直接的说明就是把01背包的有限次选取变为无限次选取求最大价值相对的遍历方向也可以相互调换因为dp[j]只需要上次的计算结果就行 publicclassCarlcodeAllBag{publicstaticvoidtestCompletePack(){//先遍历物品再遍历背包int[]......
  • 【题库】人工智能训练师练习题
    单选题1、Windows系统不能进行数据爬虫。A.正确B.错误2、自然语言处理是一门融语言学、计算机科学、心理学于一体的科学。A.正确B.错误3、文本分类是指将文本按照内容的不同判别到一个或多个预先确定的文本类别之中的过程。A.正确B.错误4、中文分词只局限于中文应......
  • 01背包问题 Golang实现
    背包问题的分类:01背包描述:有n件物品和一个最多能背重量为w的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。思路分析:问题核心:从给定的......
  • 25年开篇之作---动态规划系列<七> 01背包问题
    目录一:背包问题的简介二:01背包问题1.模板题2.LeetCode经典例题一:背包问题的简介背包问题(Knapsackproblem)是⼀种组合优化的NP完全问题。问题可以描述为:给定⼀组物品,每种物品都有⾃⼰的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最⾼。......
  • 动态规划<八> 完全背包问题及其余背包问题
    目录例题引入---找到解决问题模版LeetCode经典OJ题1.第一题 2.第二题 3.第三题 其余的一些背包问题1.二维费用的背包问题1.第一题2.第二题2.其余杂题例题引入---找到解决问题模版OJ传送门牛客DP42【模板】完全背包画图分析: 使用动态规划解决(第二问与......
  • Python练习题
    序列索引和切片序列索引letters=["a","b","c","d","e","f","g","h","i","j"]print(letters[1])在Python中,列表的索引是从0开始的,即列表中第一个元素的索引为0,第二个元素的索引为1,以此类推。因此,​letter......