最经典的动态规划题目,注意这里将二维数组压缩成了一维数组来进行计算
// hiho1038.cpp : Defines the entry point for the console application.
//
#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
//#define DEBUG
using namespace std;
int main()
{
#ifdef DEBUG
ifstream cin("E:\\cppfiles\\input.txt");
#endif
int n, m;
cin >> n >> m;
vector<int> need(n, 0);
vector<int> value(n, 0);
for (int i = 0; i < n; ++i)
{
cin >> need[i] >> value[i];
}
vector<int> dp(m+1, 0);
for (int i = 1; i <= n; ++i)
{
for (int j = m; j>need[i-1]; --j)
{
dp[j] = max(dp[j], dp[j - need[i-1]] + value[i-1]);
}
}
cout << dp[m] << endl;
return 0;
}