Перебор на C++ с вложенными циклами
Пишу программу которая собирает головоломку. Головоломка относится к классу объемных упаковок, т. е. нужно собрать в коробочку размером 2*3*4, 8 деталей.
Каждая деталь состоит из двух целых кубов и двух половинок кубов. Каждая деталь имеет 24 вращения. (Пример детали смотрите на фото)
Я описал каждую деталь так: За целый куб взято число 13, а за половинки кубов числа от 1 до 12, таким образом что если совместить деталь с кодом 7 и кодом 6 (не вращая их соответственно) то получим целый куб, т. е. 13.
Описание детали:
int A1[3][3][3];
for(i=0;i<3;i++){
for(j=0;j<3;j++){
for(l=0;l<3;l++)
A1[j][l]=0;
A1[0][0][0]=13;
A1[0][0][1]=13;
A1[0][0][2]=1;
A1[0][1][0]=9;
}
}
Т. е. Взял трехмерный массив, заполнил его нулями, а потом поместил в него деталь. Для каждой детали 24 массива, т. е
А1,...А24,
В1,...В24,
С1,...С24,
D1,...D24,
E1,...E24,
F1,...F24,
G1,...G24,
H1,...H24.
После этого я создал массив который является этой коробочкой в которую будем укладывать детали.
Теперь мне нужно сделать перебор таким образом: например берем деталь A1, ставим ее на место в массиве [0][0][0], затем берем деталь В1 ставим ее на тоже место, если не противоречит условию что все элементы массива не больше 13, то берем С1 и ставим туда же, иначе сдвигаем ее на один вправо. Если после всех возможных сдвигов условие не срабатывает берем деталь А1 сдвигаем правее, и все повторяется, если так не срабатывает, берем деталь А2 и опять начинаем этот алгоритм. Подскажите- помогите организовать такой перебор.