#include #include int pickedColor[6] = { 0 }; bool pickNextColor(int layer, int maxColorCount) { int i = 1; if (layer == 6) { if ((pickedColor[1] != pickedColor[5]) && (pickedColor[1] != pickedColor[4]) && (pickedColor[1] != pickedColor[3]) && (pickedColor[5] != pickedColor[4]) && (pickedColor[3] != pickedColor[4]) && (pickedColor[4] != pickedColor[2]) && (pickedColor[3] != pickedColor[2])) { printf("Min color required: %d\n", maxColorCount); printf("A: %d\nB: %d\nC: %d\nD: %d\nE: %d\n", pickedColor[1], pickedColor[2], pickedColor[3], pickedColor[4], pickedColor[5]); return true; } else { return false; } } else { for (i = 1; i <= maxColorCount; i++) { pickedColor[layer] = i; if (pickNextColor(layer + 1, maxColorCount)) { return true; } } return false; } } int main() { int maxColorCount = 2; while (!pickNextColor(1, maxColorCount)) { maxColorCount++; } return 0; }