View Code of Problem 29

#include<iostream>
#include<vector>
#include<algorithm>
#include<iomanip>
#include<string>
#include<cmath>

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