写成二维数组,空间太大,RE
#include<iostream>
using namespace std;
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int n,m,i,j,w[3500],d[3500],dp[13000];
scanf("%d%d",&n,&m);
for(i = 1;i <= n;i++)
scanf("%d%d",&w[i],&d[i]);
memset(dp,0,sizeof(dp));
for(i = 1;i <= n;i++)
for(j = m;j >= w[i];j--)
dp[j] = max(dp[j],dp[j-w[i]]+d[i]);
int MAX = INT_MIN;
for(i = 1;i <= m;i++)
if(MAX < dp[i])
MAX = dp[i];
printf("%d\n",MAX);
return 0;
}