题目
分析
多重背包问题。(注意与01背包问题的不同)
AC代码
#include <iostream>
#include <cstdio>
using namespace std;
int w[10005], v[10005], dp[100005];
int main()
{
int t, m;
scanf("%d%d", &t, &m);
for (int i = 1; i <= m; i++)
{
scanf("%d%d", &w[i], &v[i]);
}
for (int i = 1; i <= m; i++)
{
for (int j = w[i]; j <= t; j++)
{
dp[j] = max(dp[j], dp[j - w[i]] + v[i]);
}
}
printf("%d\n", dp[t]);
return 0;
}