Разрезание шахматной доски
Написать программу нахождения всех способов разрезания шахматной доски с числом клеток nxn (n-четное) на две одинаковые по форме части (не считая вращений и отражений).[/SIZE]
Как я понимаю, доска должна быть разрезана на 2 равные части так, чтоб они накладывались друг на друга.
Помогите, пожалуста.
Написать программу нахождения всех способов разрезания шахматной доски ...
На каком языке написать ? На любом пойдет ? [COLOR="Red"]За небрежное оформление темы - предупреждение.[/COLOR]модератор.
Как я понимаю, доска должна быть разрезана на 2 равные части так, чтоб они накладывались друг на друга.
Помогите, пожалуста.
Отрезанная часть обязательно должна быть связной?
Да, должны быть 2 неразрывные части.
Решение задачи для n=4:
1100
1100
1100
1100
1000
1100
1100
1110
0000
1100
1100
1111
0000
0100
1101
1111
0000
0101
0101
1111
0001
0101
0101
0111
Подскажите как решать? Если только перебором, то как перебирать?
Уже неделю голову ломаю((
Тогда можно пробовать брать для начала розрез пополам и рекурсивно пробовать менять по 1 клетке. При изменении клетки проверять связность куска, пробовать отражать (тут нужно правило которое определяет который из вариантов отражения принимать за основной) и если все гуд и вариант нас устраивает и еще не встречался идти дальше по рекурсии.
Найденные варианты надо хранить в масиве, который будем сортировать и проверять по нем результат бинарным поиском.
Хотя чтото мне самому ета идея не нравится.
тут еще вопрос возникает: сколько таких матриц хранить придется?
Респект. Признаю свою идею плохой.
Возвратный алгоритм - это какой? По-видимому тут должна быть рекурсия (потому что лаба на тему "Рекурсия").
Перебирать половину доски или четверть несложно.
Но главный вопрос: как перебрать все варианты, не повторяясь, чтобы в конце концов получить спираль?
Объясни, пожалуста, на примере, если не трудно.