01背包入门题-hdu bone collection

#include<bits/stdc++.h>
using namespace std;
int w[1001];
int v[1001];
int dp[1001][1001];
int main(){
    int T;
    int N,V;
    cin>>T;
    while(T--){
        cin>>N>>V;
        memset(dp,0,sizeof(dp));
        for(int i=1;i<=N;i++)
        cin>>w[i];
        for(int i=1;i<=N;i++)
        cin>>v[i];

        for(int i=1;i<=N;i++)
        {
            for(int vol=0;vol<=V;vol++)//hdu题目有体积为0的数据
            if(vol<v[i])dp[i][vol]=dp[i-1][vol];//这句话不能省略否则楼下数组越界
            else
            dp[i][vol]=max(dp[i-1][vol],dp[i-1][vol-v[i]]+w[i]);       
        }
        cout<<dp[N][V]<<endl;
        
    }
    system("pause");
    return 0;
}```

©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页