简单的01背包
可以去记住模板
特别注意:
- i 和 j 是怎么循环的
- j 要保证大于等于 那什么 怎样才可以相减
//P2871 [USACO07DEC]手链 Charm Bracelet
//2016.11.15
#include <cstdio>
#include <iostream>
#define MAXN 50000 + 1
using namespace std;
int n, m, c, v;
int f[MAXN] = {0};
int main(){
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++)
{
// for (int i = 1; i <= m; i++)
// cout << f[i] << ' ';
// cout << endl;
scanf("%d%d", &c, &v);
for (int j = m; j >= c; j--)
f[j] = max(f[j], f[j - c] + v);
}
// for (int i = 1; i <= m; i++)
// cout << f[i] << ' ';
cout << f[m];
return 0;
}