许诺 • 3天前
#include <iostream>
#include <vector>
using namespace std;
int main() {
int counts[6];
int weights[6] = {1, 2, 3, 5, 10, 20};
int total_max = 0;
for (int i = 0; i < 6; ++i) {
cin >> counts[i];
total_max += counts[i] * weights[i];
}
vector<bool> dp(total_max + 1, false);
dp[0] = true;
for (int i = 0; i < 6; ++i) {
for (int j = 0; j < counts[i]; ++j) {
for (int k = total_max; k >= weights[i]; --k) {
if (dp[k - weights[i]]) {
dp[k] = true;
}
}
}
}
int total = 0;
for (int i = 1; i <= total_max; ++i) {
if (dp[i]) {
total++;
}
}
cout << "Total=" << total << endl;
return 0;
}
评论:
请先登录,才能进行评论