01背包问题
#include <iostream>
#include <algorithm>
using namespace std;
int f[1001][10001];
int w[1001];
int v[1001];
int main()
{
int n, m;
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; i++)
{
scanf("%d %d", &v[i], &w[i]);
for (int j = 1; j <= m; j++)
{
if (j < v[i])
{
f[i][j] = f[i - 1][j];
}
else
f[i][j] = max(f[i - 1][j], f[i - 1][j - v[i]] + w[i]);
}
}
cout << f[n][m] << endl;
getchar();
system("pause");
}
#include <iostream>
#include <algorithm>
using namespace std;
int f[1001];
int w[1001];
int v[1001];
int main()
{
int n, m;
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; i++)
{
scanf("%d %d", &v[i], &w[i]);
for (int j = m; j >= v[i]; j--)
{
f[j] = max(f[j], f[j - v[i]] + w[i]);
}
}
cout << f[m] << endl;
getchar();
system("pause");
}
#include <iostream>
#include <algorithm>
using namespace std;
int f[1001];
int main()
{
int n, m;
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; i++)
{
int v, w;
scanf("%d %d", &v, &w);
for (int j = m; j >= v; j--)
{
f[j] = max(f[j], f[j - v] + w);
}
}
cout << f[m] << endl;
getchar();
system("pause");
}