![]() |
![]() |
Тёмный Эльф |
![]() ![]()
Сообщение
#1
|
![]() Влюблённый псих ![]() ![]() ![]() Группа: Пользователи Сообщений: 185 Пол: Женский Реальное имя: Лейла Репутация: ![]() ![]() ![]() |
Привет! Подскажите пожалуйста с алгоритмом.
Есть матрица n на n. Имеется трехмерный кубик, который в начале пути находится в ячейке A[1,1], а в конце пути должен попасть в ячейку A[1,n]. При этом он должен пройти все ячейки матрицы, да еще плюс к этому не должен вставать на новую позицию своей запрещенной стороной (проще говоря, перваливаясь с одной своей стороны на другую, он не должен прикасаться к полу запрещенной стороной). В самом начале пути эта запрещенная сторона находится сверху. Для матриц 2x2 и 3x3 этот путь легко найти. В первом случае кубик проходит путь 1342 (если элементы матрицы пронумерованы по порядку), а во втором 125478963. Но как быть с матрицами 4x4 и большего размера я уже не знаю! Может, существует общий алгоритм нахождения этого пути? |
![]() ![]() |
spill |
![]()
Сообщение
#2
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 58 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Есть поиск в ширину:
1. Первую клетку пометить числом 1. 2. Поместить в очередь координаты первой клетки 3. Пока очередь не пуста нелать: 3.1. Извлечь из очереди координаты очередной клетки 3.2. Всех непомеченных и соседей (с учетом границ и "темной" грани) этой клетки пометить числом, на 1 большим, чем число, которым помечена эта клетка. 3.3. Добавить в очередь координаты этих соседних клеток. По окончании работы нужно построить оптимальный путь. Первой будет финишная клетка. Второй - соседняя с ней клетка, помеченная наименьшим числом. Третья - наименьшая из соседей второй ит.д. |
![]() ![]() |
![]() |
Текстовая версия | 21.06.2025 18:58 |