View Code of Problem 29

#include <iostream>
#include <cstdio>
#include <vector>
 
using namespace std;
vector<string> goods = {"ABDE", "ABC", "BCEF", "ADG", "BDEFH", "CFI", "DEGH", "GHI", "EFHI"};
 
bool try_buy(vector<int> require, vector<int> &nums) {
    for (int i = 0; i < 9; i++) {
        for (int j = 0; j < goods[i].size(); j++) {
            require[goods[i][j] - 'A'] += nums[i];
        }
    }
    for (int i = 0; i < 9; i++) {
        if (require[i] % 4 != 0)
            return false;
    }
    return true;
}
 
int main() {
    vector<int> require(9);
    for (int i = 0; i < 9; i++)
        cin >> require[i];
    int kind = 2;
    while (true) {
        for (int n1 = 0; n1 < kind; n1++) {
            for (int n2 = 0; n2 < kind; n2++) {
                for (int n3 = 0; n3 < kind; n3++) {
                    for (int n4 = 0; n4 < kind; n4++) {
                        for (int n5 = 0; n5 < kind; n5++) {
                            for (int n6 = 0; n6 < kind; n6++) {
                                for (int n7 = 0; n7 < kind; n7++) {
                                    for (int n8 = 0; n8 < kind; n8++) {
                                        for (int n9 = 0; n9 < kind; n9++) {
                                            vector<int> nums = {n1, n2, n3, n4, n5, n6, n7, n8, n9};
                                            if (try_buy(require, nums)) {
                                                for (int i = 0; i < nums.size(); i++) {
                                                    while (nums[i]) {
                                                        cout << i + 1 << " ";
                                                        nums[i]--;
                                                    }
                                                }
                                                return 0;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        kind++;
    }
}

Double click to view unformatted code.


Back to problem 29