/***
*典型0-1背包问题....参照DD大牛写的背包9解...
**/
#include <iostream>
#include <memory.h>
using namespace std;
int moneyImportant[30000];
int main()
{
int totalMoney;
int elementNum;
int price;
int importance;
while (cin >> totalMoney >> elementNum)
{
memset(moneyImportant, 0, sizeof(moneyImportant));
int totalValue = 0;
for (int i = 0; i < elementNum; i++)
{
cin >> price >> importance;
for (int j = totalMoney; j >= price; j--)
{
if (moneyImportant[j - price] + importance * price > moneyImportant[j])
{
moneyImportant[j] = moneyImportant[j - price] + importance * price;
}
}
}
for (int i = totalMoney; i >= price; i--)
{
totalValue = max(moneyImportant[i], totalValue);
}
cout << totalValue << endl;
}
}
sicily 1342 开心的金明
最新推荐文章于 2017-04-16 16:08:13 发布