【動態規劃】徹底揹包問題

貴有恆,何須三更起五更眠;最無益,莫過一日曝十日寒。

【動態規劃】徹底揹包問題

時間限制: 1 Sec  內存限制: 64 MB

題目描述

話說張琪曼和李旭琳又發現了一處魔法石礦(運氣怎麼這麼好?各類嫉妒羨慕恨啊),她們有一個最多能裝m公斤的揹包,如今有n種魔法石,每種的重量分別是W1,W2,…,Wn,每種的價值分別爲C1,C2,…,Cn。若每種魔法石的個數足夠多,求她們能得到的最大總價值。

輸入

第一行爲兩個整數,即m,n。

之後每行爲兩個整數,表示每塊魔法石的重量和價值。

輸出

得到的最大總價值。

樣例輸入

5 5
1 1
2 2
3 3
4 4
5 5

樣例輸出

5


#include <iostream>
#include <cstring>

using namespace std;

int n,m,f[11111],w[1111],c[1111];

void CompletePack(int m,int v,int w)
{
    for(int i=v;i<=m;i++)
        f[i]=max(f[i],f[i-v]+w);
}

int main()
{
    while(cin>>m>>n)
    {
        memset(f,0,sizeof(f));
        for(int i=0;i<n;i++)
            cin>>w[i]>>c[i];
        for(int i=0;i<n;i++)
            CompletePack(m,w[i],c[i]);
        cout<<f[m]<<endl;
    }
    return 0;
}
View Code
相關文章
相關標籤/搜索