AC

许诺  •  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;

}


评论:

请先登录,才能进行评论