背包问题 题解

题目在主页,如有出错请指出

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;
}

posted @ 2025-04-29 14:07  嵇若凌  阅读(3)  评论(0)    收藏  举报