当前位置:   article > 正文

二维费用的背包问题_有 n 件物品和一个容量是 v 的背包,背包能承受的最大重量是 m。 每件物品只能用一

有 n 件物品和一个容量是 v 的背包,背包能承受的最大重量是 m。 每件物品只能用一

有 N 件物品和一个容量是 V 的背包,背包能承受的最大重量是 M。

每件物品只能用一次。体积是 vi,重量是 mi,价值是 wi。

求解将哪些物品装入背包,可使物品总体积不超过背包容量,总重量不超过背包可承受的最大重量,且价值总和最大。
输出最大价值。

输入格式

第一行三个整数 N,V,M,用空格隔开,分别表示物品件数、背包容积和背包可承受的最大重量。

接下来有 N 行,每行三个整数 vi,mi,wi,用空格隔开,分别表示第 i 件物品的体积、重量和价值。

输出格式

输出一个整数,表示最大价值。

数据范围

0<N≤1000
0<V,M≤100
0<vi,mi≤100
0<wi≤1000

输入样例

  1. 4 5 6
  2. 1 2 3
  3. 2 4 4
  4. 3 4 5
  5. 4 5 6

输出样例:

8

题解:二维费用背包问题本质上与01背包问题比较类似,但差别在于本题的 dp [ i ][ j ] 中 i 不再代表物品数量,反而代表背包容积,同样 j 变化为背包所能承受的重量,其余部分仍按照 01 背包思路打表解题即可。

代码如下:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n,v,m;
  4. const int N=1005;
  5. int V[N],M[N],W[N];
  6. int dp[N][N];
  7. int main()
  8. {
  9. cin>>n>>v>>m;
  10. for(int i=1;i<=
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/466324
推荐阅读
相关标签
  

闽ICP备14008679号