#include<iostream>
using namespace std;
int valueMax[501][100001];
int valueNeed[1001];
int need[200001];
void knap(int n, int m);
int main()
{
int N, M;
while(cin>>N>>M)
{
for (int i = 1; i<=N; i++)
{
cin >> need[i];
cin >> valueNeed[i];
}
knap(N, M);
cout << valueMax[N][M] << endl;
}
return 0;
}
void knap(int n, int value)
{
int i, j;
for (i = 0; i <= n; i++)
{
valueMax[i][0] = 0;
}
for (j = 0; j <= value; j++)
{
valueMax[0][j] = 0;
}
for (i = 1; i <= n; i++)
for (j = 1; j <= value; j++)
{
if (j<need[i])
{
valueMax[i][j] = valueMax[i - 1][j];
continue;
}
if (valueMax[i - 1][j] >= valueMax[i - 1][j - need[i]] + valueNeed[i])
valueMax[i][j] = valueMax[i - 1][j];
else
valueMax[i][j] = valueMax[i - 1][j - need[i]] + valueNeed[i];
}
}
姐姐发现,wrong ans 原因四,数组大小刚好是hiho上声称的最大容量。于是多加上一个1就对了。。。。以上代码AC hiahia