10分求助大佬们
查看原帖
10分求助大佬们
760035
wangleisysu楼主2022/8/20 21:13

10分求助大佬们

排查了半天没看出哪里有问题,麻烦大佬们指点一下,谢谢大佬们

#include <iostream>
#include <vector>
using namespace std;

int main(int argc, const char * argv[]) {
    int v, n, c;
    cin >> v >> n >> c;

    vector<int> dp(c + 1);
    vector<int> weight(n + 1), volume(n + 1);
    int sum = 0;
    for (int i = 1; i <= n; ++i) {
        cin >> volume[i] >> weight[i];
        sum += volume[i];
    }
    
    if (sum < v) {
        cout << "Impossible" << endl;
        return 0;
    }
    
    for (int i = 1; i <= n; ++i) {
        for (int j = c; j >= weight[i]; --j) {
            dp[j] = max(dp[j], dp[j - weight[i]] + volume[i]);
        }
    }
    
    if (dp[c] < v) {
        cout << "Impossible" << endl;
        return 0;
    }
    
    for (int i = 1; i <= c; ++i) {
        if (dp[i] >= v) {
            cout << c - i << endl;
        }
    }
    return 0;
}
2022/8/20 21:13
加载中...