来自蒟蒻的求助
查看原帖
来自蒟蒻的求助
372849
AG之梦月江边楼主2021/3/20 15:42

许多年前,在欧洲的一个乡村中,有一个被称为“骨头收集者”的巫师。她喜欢收集各种骨头,例如狗,牛的骨头。某天他去了一个埋葬动物的坟墓,带着一个大袋子,最多能装体积为V的骨头。不同的骨头具有不同的骨头值和不同的体积,现在给定沿途的每个骨头的骨头值以及体积,您能否计算出骨头收集者可获得的骨头值总和的最大值?

#include<bits/stdc++.h>
using namespace std;
int w[1010],v[1010],d[1010][1010];
int main(){
    int t,n,V;
    cin>>t;
    while(t--){
        cin>>n>>V;
        for(int i=1;i<=n;i++)
            cin>>w[i];
        for(int i=1;i<=n;i++)
            cin>>v[i];
        for(int i=0;i<=n;i++)
			d[i][0]=1;
        for(int i=1;i<=n;i++)
            for(int j=0;j<=V;j++){
                if(v[i]>j) d[i][j]=d[i-1][j];
                else d[i][j]=max(d[i-1][j],d[i-1][j-v[i]]+w[i]);
            }
        cout<<d[n][V]-1<<endl;
    }
    return 0;
}
2021/3/20 15:42
加载中...