прохождение лабиринта с помощью рекурсии, бинарная матрица |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
прохождение лабиринта с помощью рекурсии, бинарная матрица |
Positiv |
Сообщение
#1
|
Гость |
Доброго времени суток !!
Народ , помогите пожалуйста , нужно сделать программу : дана двоичная матрица из 0 и 1 , в рандомной позиции появлятся человечек , которому нужно выйти в правый нижний угол , идти он может только по тем цифрам , на котрой сначала появился (то есть если появился на 1 то только по еденицам). Если выхода нет то нужно вывести на экран что нет выхода . матрица задается рандомно. Программа должна быть сделана при помощи рекурсии . Заранее спасибо. |
St@senk@ |
Сообщение
#2
|
Новичок Группа: Пользователи Сообщений: 48 Пол: Мужской Реальное имя: Максим Репутация: 1 |
Ну смотри.
псевдокод функция шаг(х,у) булен начало отметим, что в этой точке мы были. если х=(длина лабиринта) и у=(ширина лабиринта), то результат = Правда, а если нет, то если на севере свободно, то результат = шаг(х,у-1), если нет, то если на западе свободно, то результат = шаг(х+1,у), если нет, то если на юге свободно, то результат = шаг(х,у+1), если нет, то если на востоке свободно, то результат = шаг(х-1,у), если нет, то результат = ложь конец свободно = такая же цифра и мы там не были если результат работы да, то тогда выход есть. А как поиск пути найти, я думаю ты догадаешься P.S. в алгоритме не уверен. Сообщение отредактировано: St@senk@ - -------------------- Три пути ведут к знанию: путь размышления - это путь самый благородный, путь подражания - это путь самый легкий и путь опыта - это путь самый горький.
Конфуций |
hiv |
Сообщение
#3
|
Профи Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: 11 |
отметим, что в этой точке мы были. Направление рассуждения абсолютно верное, но не надо отмечать был ты в той или иной точке или не был. Нужно смотреть совпадение координат с первоначальной точкой обхода, когда вышел к границе в самом начале. Более того, нужно учесть, что таких совпадений может быть несколько!если х=0 или у=0 или х=(длина лабиринта) или у=(ширина лабиринта), то результат = Правда, а если нет, то ... P.S. в алгоритме не уверен. И внимательно читаем условие: "человечек , которому нужно выйти в правый нижний угол " ЗЫ: Просьба к автору темы - поподробней опишите как человечек может ходить? ДА! Совсем забыл... у человечика должно быть "направление движения" и его все время должно тянуть в какую-то сторону (или по часовой, или против). Т.е. использовать абсолютные понятия север, восток, юг и запад нельзя. Сообщение отредактировано: hiv - -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
Текстовая версия | 28.03.2024 15:40 |