View Code of Problem 29

#include<bits/stdc++.h> 
using namespace std;
 
vector<string> goods = { "ABDE", "ABC", "BCEF", "ADG", "BDEFH", "CFI", "DEGH", "GHI", "EFHI" };
//vector<string> goods = { "BDEFH", "ABDE", "BCEF", "DEGH", "EFHI", "ABC", "ADG", "CFI", "GHI" };
 
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