洛谷P1855 榨取kkksc03

二维背包,加一个维度就好,这个时候就体现出来一维数组做背包多重要了,三维数组什么的,绝对要mle

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;

int max(int a, int b){
    return a > b ? a : b;
}

int main()
{
    int n, m, t;
    cin >> n >> m >> t;
    int money[201] = { 0 };
    int time[201] = { 0 };
    for (int i = 0; i < n; i++){
        cin >> money[i] >> time[i];
    }
    int pos[201][201] = { 0 };
    for (int i = 0; i < n; i++){
        for (int j = m; j >= money[i]; j--){
            for (int k = t; k >= time[i]; k--){
                pos[j][k] = max(pos[j][k], pos[j - money[i]][k - time[i]] + 1);
            }
        }
    }
    cout << pos[m][t] << endl;


    return 0;
}

猜你喜欢

转载自www.cnblogs.com/Vetsama/p/12288464.html