F[i][j] = max(F[i-1][j],F[i-1][j - volume[i]] + value[i]);
#include <iostream>
#include <cstring>
using namespace std;
int N,V;
long value[1001];
long volume[1001];
long F[1001][1001];
int T;
long max(long a,long b)
{
return a>b?a:b;
}
int main()
{
cin>>T;
while(T--)
{
cin>>N>>V;
int i,j;
for(i = 1; i <= N; i++)
{
cin>>value[i];
}
for(i = 1; i <= N; i++)
{
cin>>volume[i];
}
memset(F,0,sizeof(F));
for(i = 1; i <= N; i++)
{
for(j = 0; j <= volume[i] - 1; j++)
{
F[i][j] = F[i-1][j];
}
for(j = volume[i]; j <= V; j++)
{
F[i][j] = max(F[i-1][j],F[i-1][j-volume[i]] + value[i]);
}
}
cout<<F[N][V]<<endl;
}
return 0;
}
hdu 2602 01背包DP
最新推荐文章于 2020-08-26 16:53:54 发布
本文介绍了一种解决背包问题的动态规划方法,并通过具体的代码实现了该算法。使用了二维数组来存储中间结果,以便于查找最大价值。

1万+

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



