1.24D01揹包儲錢

思路:完全揹包。補充在註釋中。

  #include<iostream>  
#include<stdio.h>
#include<algorithm>
using namespace std;
int f[10010] = { 0 };
int main()
{
    int E, F, m, N, T, p[1000], w[1000];
    cin >> T;
    while (T--)
    {
        scanf_s("%d%d%d", &E, &F, &N);
        m = F-E;
        for (int i = 0; i < N; i++)
        {
            cin >> p[i] >> w[i];
        }
        for (int i = 1; i <= m; i++)
        {
            f[i] = 10000000;
        }
        for(int i=0;i<N;i++)
            for (int j = w[i]; j <= m; j++)
            {
                f[j] = min(f[j], f[j - w[i]] + p[i]);//此處是在剩餘空間[j - w[i]]中進行空間安排,後面則是揹包所對應的價值。
            }
        if (f[m] != 10000000)
            printf("The minimum amount of money in the piggy-bank is %d.\n", f[m]);
        else    
            cout << "This is impossible." << endl;    
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章