这道题就是用二维数组解决的时候,就是简单的动态规划,但是坑就坑在可能出现体积为0但是价值不为0的例子
一:二维数组
下面是错误的代码
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <cstdio>
using namespace std;
#define maxn 1001
int T,N,V,
w[maxn],v[maxn];
int result[maxn][maxn];
void slove()
{
int i,j;
for(i=1;i<=N;i++){
for(j=1;j<=V;j++){
if(j>=w[i]){
result[i][j]=max(result[i-1][j],result[i-1][j-w[i]]+v[i]);
}else{
result[i][j]=result[i-1][j];
}
}
}
}
int main()
{
cin >> T;
while(T--)
{
memset(result,0,sizeof(result));
cin >> N >> V;
int i,j;
for(i=1;i<=N;i++){
scanf("%d",&v[i]);
}
for(i=1;i<=N;i++){
scanf("%d",&w[i]);
}
slove();
cout << result[N][V] << endl;
}
return 0;
}
这是我当时测试的样例:
1
3 10
1