背包问题 题解
题目在主页,如有出错请指出
include <bits/stdc++.h>
using namespace std;
int v[105], w[105], ans[105][1005];
int main()
{
int m, n;
scanf("%d %d", &m, &n);
for (int i = 1;i <= n;i++)
scanf("%d %d", &v[i], &w[i]);
for (int i = 1;i <= n;i++)
{
for (int j = m;j >= 0;j--)
{
if(j >= v[i])
{
ans[i][j] = max(ans[i - 1][j - v[i]] + w[i], ans[i - 1][j]);
}
else ans[i][j] = ans[i - 1][j];
}
}
cout << ans[n][m] << endl;
return 0;
}