Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 06.06.2020
Сообщений: 1
1

Нахождение пути в лабиринте поиском сначала в ширину (BFS)

06.06.2020, 09:53. Показов 2678. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу помощи, может даже кто-то на форуме занимался таким

Нахождение пути в лабиринте поиском сначала в ширину (BFS).

Лабиринт представляет прямоугольное поле из клеток, по которым
можно перемещаться, выполняя за один ход переход в соседнюю
клетку (расположенную сверху, снизу, слева или справа от текущей),
не выходя за пределы лабиринта. Нельзя переместиться в "непроходимую"
клетку. В исходных данных лабиринт представлен картой, состоящей из
символов, на карте "непроходимые" клетки помечены символом '*', а
свободные символом '.’. Входом в лабиринт является верхняя левая клетка,
а выходом - правая нижняя клетка. Эти клетки "свободны". Нужно определить
минимальное количество ходов, необходимых для достижения выхода и путь,
которым достигается это решение (или один из возможных путей, если решений
несколько).

ПЕРВЫЙ шаг (подготовка).
Прочитать данные :
Ввести из потока stdin значения N, M - количество строк и столбцов
карты лабиринта.
Ввести построчно всю карту лабиринта в массив char l[N][M].
Построить числовой вариант карты int L[N][M], в котором изначально в
свободные клетки записывается число INT_MAX (максимально возможное целое)
Для использования этой константы подключите заголовочный файл «limits.h».
В "непроходимые клетки" запишем -1.

ВТОРОЙ шаг (инициализация)
Создадим две очереди Q1 и Q2.
В клетку с координатами [0][0] числового массива запишем 0 - число шагов,
необходимых для достижения этой клетки. В переменную Nc запишем число 1.
В очередь Q1 поместим клетку [0][0].

ТРЕТИЙ шаг (итерация).
Если очередь Q1 пуста, идем к пятому шагу.
Если очередь Q1 не пуста, для каждого элемента в ней просмотреть
соседние клетки, и если в них можно переместиться, то запишем в них
число Nc, при условии, что находящееся там число больше Nс. Клетку,
в которую мы произвели запись, занесем в очередь Q2. Когда все элементы
очереди Q1 будут рассмотрены, перейдем к следующему шагу.

ЧЕТВЕРТЫЙ шаг.

Меняем очереди Q1 и Q2 местами. Теперь Q2 пуста, в Q1 - список клеток
для обработки на новом шаге итерации.

ПЯТЫЙ шаг (вывод результата).
Если в клетке выхода осталось значение INT_MAX, то лабиринт не проходим.
Иначе в нем находится ответ. Восстановить путь обратным движением по
клеткам с убывающими значениями, вплоть до значения 0 (входная клетка).
Выводим на консоль решение и путь
----------------------------------------------
Пример входной информации в файле Labirint.txt
Максимальные значения M и N 2000, минимальные 2.
В исходных данных в конце строки могут стоять либо один символ '\n’ или
два '\r' и '\n'. Программа должна корректно их обрабатывать
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2020, 09:53
Ответы с готовыми решениями:

Нахождение кратчайшего пути до цели в лабиринте
Допустим у нас есть лабиринт,в котором бегают какие-нибудь существа. Есть ли возможность, чтобы они...

Нахождение пути в лабиринте с использованием генетического алгоритма
Нужно написать программу поиска выхода из лабиринта с помощью генетического алгоритма. Программа...

Нахождение пути из одного угла в противоположный в лабиринте размерами MxN
Составить программу для нахождения пути из одного угла в противоположный в лабиринте размерами MxN,...

Графы, нахождение наименьшего пути между вершинами обходом в ширину
Здравствуйте, помогите пожалуйста, нужно по заданной матрице смежности графа определить наименьший...

0
06.06.2020, 09:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2020, 09:53
Помогаю со студенческими работами здесь

Алгоритм BFS // поиск в ширину
Написать программу, которая с помощью алгоритма BFS(поиск в ширину): выполняет поиск в...

Обход графа в ширину - Breadth First Search (BFS)
Всем привет! Я не понимаю алгоритм обхода в глубину BFS:( Кто может помощь?

Отсутствие пути при решении BFS
Подскажите, пожалуйста, в чём может быть проблема. Считываю с файла лабиринт, перевожу его в...

Дерево директорий глубины d и ширины b, способом сначала-в-глубину/сначала-в-ширину
Создать дерево директорий глубины d и ширины b способом сначала-в-глубину/сначала-в-ширину, где...

Поиск пути в лабиринте
Здравствуйте! Я написал программу поиска пути в двумерном массиве используя волновой алгоритм. Но...

Поиск пути в лабиринте
Вобщем задача проста: Дан лабиринт в виде массива. Цифрами 1 являются стены, 0-пути, 3-выход из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru