1. There is a problem with initialization.
memset(dp,0,sizeof(dp));//可以
memset(dp,0,v);//不行
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
const int MAX = 1015;
#define MAX_(a,b) (a>b?a:b)
int volume[MAX];
int value[MAX];
int dp[MAX];
int main()
{
int n,v;
int t;
scanf("%d",&t);
while(t--)
{
cin>>n>>v;
memset(dp,0,sizeof(dp));
for(int i=0;i<n;i++)
{
cin>>value[i];
}
for(int i=0;i<n;i++)
{
cin>>volume[i];
}
for(int i=0;i<n;i++)
{
for(int j=v;j>=volume[i];j--)
{
dp[j]=MAX_(dp[j],dp[j-volume[i]]+value[i]);
}
}
cout<<dp[v]<<endl;
//memset(dp,0,v);
}
return 0;
}