版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/TH_NUM/article/details/88812751
将下面四个重量的物品1,2,2,3 价值分别是9,3,3,6 装进 重量为4的背包中,使得背包的重量不超过4,并且价值最大。
#include<iostream>
#include<cstring>
#include<map>
#include <vector>
#include <set>
#include <algorithm>
#include<limits.h>
using namespace std;
bool camp(vector<int>&a,vector<int>&b){
return a[1]<= b[1]? (a[1]==b[1]? a[0]<b[0]:true) : false;
}
int main(){
vector<int> weights={0,1,2,2,3};
vector<int> value={0,9,3,3,6};
vector<vector<int>> v(5,vector<int>(5,0));
int n=4;
int m=4;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(weights[i]>j){
v[i][j]=v[i-1][j];
}else{
int v1=v[i-1][j];
int v2=v[i-1][j-weights[i]]+value[i];
v[i][j]=max(v1,v2);
}
}
}
cout<<v[4][4]<<endl;
return 0;
}