| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > Backtraking. Пентамино. Паскаль. |
| Автор: Irene 1.4.2006, 14:14 |
| Здравствуйте. Итак у меня имеется задача, звучащая след. образом: Дано: 12 фигур пентамино фигуры связные, плоские,каждая из которых составлена из пяти квадратов одного размера, соединенные по ребрам. Фигуры можно складывать ввиде мозаики многими способами для получения прямоугольника размера 6х10. Необходимо найти все решения для прямоугольников 6х10 и 5х12 ( также надо учесть вертикальные положения,т.е. 10х6 и 12х5) Вот. Я себе это представляю так: Создать массив двухмерных массивов. В каждый двухмерный массив (5х5) записать фигуру пентамино (т.е. фигура состоящая из пяти квадратиков в ряд "палочка" будет выглядеть как матрица 5х5, где первая строчка - единицы, а все остальные нули). Таких двухмерных массивов получится 48 (с учетом переворотов). Потом сделать 12 "временных матриц". В каждую из этих матриц в левый верхний угол заносим одну фигуру (т.е. первые 12 двухмерных массивов 5х5). Затем складывем первые клеточки вр.матриц. Как только получаем в сумме >1 прекращаем, и сдвигаем впоследней матрице фигуру на одну клетку вправо и снова складываем перые клетки. и так двигая и крутя массивчики с фигурами, по моему уразумению должно сложиться это самое пентамино. Но только вот у меня даже не получилось здесь описать мой алгоритм как следует, поэтому я думаю, что м.б. он какой-то не такой, что где-нибудь есть какой-нить похожий пример. Подскажите пожалуйста. |