//===============================================================================
//
//> Author : flowertree
//> About : poj 1276
//> Time : 2015.12.28
//> Algorithm : 多重背包 楼天成男人八题poj 1742简化版
// : 完全背包转换为 01背包 多重背包转换为 完全背包
//
//===============================================================================
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
#define MAX 110000
#define M 2005
int num[MAX], w[MAX];
int dp[MAX];
int tempnum[MAX];
int main()
{
int cash;
int n;
while(scanf("%d%d", &cash, &n) != EOF)
{
memset(dp, 0, sizeof(dp));
for(int i = 1; i <= n; i++)
{
scanf("%d%d", &num[i], &w[i]);
}
for(int i = 1; i <= n; i++)
{
memset(tempnum, 0, sizeof(tempnum));
for(int v = w[i]; v <= cash; v++)
{
if(dp[v - w[i]] + w[i] > dp[v] && tempnum[v - w[i]] < num[i])
{
dp[v] = dp[v - w[i]] + w[i];
tempnum[v] = tempnum[v - w[i]] + 1;
}
}
}
cout << dp[cash] << endl;
}
system("pause");
return 0;
}
poj 1276 动态规划多重背包
最新推荐文章于 2022-05-13 16:43:56 发布