排查了半天没看出哪里有问题,麻烦大佬们指点一下,谢谢大佬们
#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;
}