0 1背包

题目大意:

给你n个物品,

第一行给出n

第二行给出第i个物品的价值

第三行给出第i个物品的重量

第四行给出背包总重量

要求给出可得最大价值

代码如下:

#include<iostream>
#include<vector>
using namespace std;
//0 1背包

int main(){
    int n;
    scanf("%d",&n);
    vector<int>val(n);
    vector<int>weight(n);
    for(int i=0;i<n;++i){
        scanf("%d",&val[i]);
    }
    for(int i=0;i<n;++i){
        scanf("%d",&weight[i]);
    }
    vector<vector<int > >d(1000,vector<int>(1000));
    int maxweight;
    scanf("%d",&maxweight);
    for(int i=0;i<=n;++i){
        for(int j=0;j<=maxweight;++j){
            d[i][j]=(i==0)?0:d[i-1][j];
            if(i>0&&j>=weight[i-1]&&d[i][j]<d[i-1][j-weight[i-1]]+val[i-1])d[i][j]=d[i-1][j-weight[i-1]]+val[i-1];
            cout<<d[i][j]<<ends;
        }        
    }
    printf("%dn",d[n][maxweight]);
    return 0;
}