#include<iostream>
using namespace std;
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int n,t,i,j,a[1005],b[1005],e,d;
cin>>t;
while(t--)
{
int c[1005]={0};
cin>>e>>d;
for(i=0;i<e;i++)
cin>>a[i];//价值
for(i=0;i<e;i++)
cin>>b[i]; //体积
for(i=0;i<e;i++)
{
for(j=d;j>=b[i];j--)
{
c[j]=max(c[j],c[j-b[i]]+a[i]);
}
}
cout<<c[d]<<endl;
}
return 0;
}
本文介绍了一种使用C++解决0-1背包问题的方法。通过输入物品的数量、背包容量及每个物品的价值和重量,程序能够计算出能放入背包的最大价值。采用动态规划算法,遍历所有可能的组合来寻找最优解。
1062

被折叠的 条评论
为什么被折叠?



