#include<bits/stdc++.h>
using namespace std;
#define NUM 50
#define CAP 1500
int v[NUM];
int w[NUM];
int p[NUM][CAP];
int main ()
{
int W,n;
while (scanf("%d", &W) && W)
{
scanf("%d", &n);
for (int i=1; i<=n; i++)
scanf("%d%d", &w[i], &v[i]);
memset (p, 0, sizeof(p));
for (int i = 1; i <= n; i++)
for (int c = W; c > 0; c--)
if (w[i]<=c) p[i][c] = max(p[i-1][c],p[i-1][c-w[i]]+v[i]);
else p[i][c] = p[i-1][c];
printf("%d\n",p[n][W]); //输出最优值
}
return 0;
}
01背包,一维数组存储结构
最新推荐文章于 2024-04-03 11:05:25 发布