|
0 / 0 / 0
Регистрация: 05.11.2011
Сообщений: 44
|
|
Найти самый короткий путь от точки до точки в матрице09.10.2012, 21:29. Показов 7757. Ответов 12
Метки нет (Все метки)
Народ, помогите...
Такая задача, имеется массив символов(char arr[][]) в котором в рандомных местах установлены препятствия(к примеру символы '*') и имеем 2 точки, нужно найти самый короткий путь от 1й точки ко 2й, двигаться можно только по верикали или горизонтали(двигаться по диагонали нельзя).
0
|
|
| 09.10.2012, 21:29 | |
|
Ответы с готовыми решениями:
12
Лабиринт, найти самый короткий путь Лабиринт. Найти самый короткий путь от входа в выходу |
|
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 3
|
|
| 10.10.2012, 00:15 | |
|
используй очередь
0
|
|
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
|
| 10.10.2012, 00:26 | |
|
Вроде бы это динамическое программирование
вам для чего это надо - это задачка с какого-то сайта и есть ограничения по времени или это задачка из универа? если второе, то к какой теме это приурочено? случаем, не к рекурсии?
0
|
|
|
0 / 0 / 0
Регистрация: 05.11.2011
Сообщений: 44
|
|
| 10.10.2012, 10:15 [ТС] | |
|
Второе, не важно к какой теме, с++ мы давно прошли(по крайней мере основы) задача заключается в следующем: создать класс с закрытым членом-динамическим 2хмерным массивом символов, конструктор имеет 2 аргумента(стороны массива), есть еще несколько открытых функций: показать массив, поставить на указанное место препятствие, назначить те самые 2 точки ну и найти самый короткий путь между ними, обходя, естественно, препятствия...Не важно что использовать перезагрузку функций, рекурсию, лямбда-выражения и т.д. мы давно прошли...Все сделал за 20 минут, но вот с алгоритмом поиска кратчайшего пути не могу справится вот уже 3 недели
0
|
|
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
|
| 10.10.2012, 11:08 | |
|
Я сам не большой знаток динам/программирования. На форуме есть ребята, которые в этом разбираются гораздо лучше. Если увидят вашу тему, то наверняка выдадут вам оптимальный алгоритм)
А я сам могу предложить самое простое решение (но и самое медленное) - рекурсия. Или разворачиваете свой массив как граф и ищите кратчайший путь уже в графе.
0
|
|
|
0 / 0 / 0
Регистрация: 05.11.2011
Сообщений: 44
|
|
| 10.10.2012, 11:48 [ТС] | |
|
Совет про граф слышу не в первый раз, но я с графами раньше никогда не работал, что же касается рекурсии, то я пробывал, но всегда нахожу какой-то косяк в алгоритме, пробывал даже вычислить все возможные пути и выбрать самый короткий из них, тоже ничего путного не вышло
0
|
|
|
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 3
|
|
| 10.10.2012, 12:23 | |
|
я же писал это примитивная очередь. (Поищи на википедии есть, и ещё...)
добавил 1 точку в очередь она нашла вторую. Теперь коротко расскажу как: В общем добавил первую точку. В каком то массиве записал это. Увеличил счётчик начала(на вики как start описана) А потом пока start!=finish берёшь ту предыдущую точку и пытаешься идти в 4 стороны, куда пройти можно добавяешь в массив. И так дальше пока не найдёшь вторую точку. Кароче по-гугли код там предельно понятно. что касается динамики... она тут подольше будет. Я б писал такую. Та точка в которой мы стоим взял бы за 1 шаг, на следующем проходе по массиву если в соседней точке 1 и в данную точку можно пройти то в данной клетке массива 2, и т.д. В итоге в конце в конечной точке будет тоже число за которое ты дошёл до этой точки. Но динамика гораздо медленнее тут... Это типичная задача на ОЧЕРЕДЬ!
0
|
|
|
320 / 270 / 128
Регистрация: 24.05.2012
Сообщений: 629
|
|||||||||||
| 10.10.2012, 13:42 | |||||||||||
|
Реализовал алгоритм Дейкстры.
1
|
|||||||||||
|
320 / 270 / 128
Регистрация: 24.05.2012
Сообщений: 629
|
||||||
| 10.10.2012, 14:01 | ||||||
|
Кстати, можно заменить хвостовую рекурсию циклом:
1
|
||||||
|
0 / 0 / 0
Регистрация: 05.11.2011
Сообщений: 44
|
|
| 10.10.2012, 15:11 [ТС] | |
|
Кот Ангенс, спасибо большое, осталось все это понять и переварить
0
|
|
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
| 10.10.2012, 16:30 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 05.11.2011
Сообщений: 44
|
|
| 10.10.2012, 19:22 [ТС] | |
|
Про очереди почитал на вики, обьяснения довольно туманны, а примеров реализации алгоритма на каком-нибудь языке программирования вообще нет, вариант с графами хотя бы понятен
0
|
|
|
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 3
|
||||||
| 10.10.2012, 22:43 | ||||||
|
эм.... могу на Pascal дать! На С++ переделать просто. Ну в принципе на вот, если разберёшься норм, нет то потом на с++ переписать могу... хотя блин ладно щас напишу:
блин долго напишу вот так псевдокодом почти...
0
|
||||||
| 10.10.2012, 22:43 | |
|
Помогаю со студенческими работами здесь
13
Найти самый короткий путь от левого столбца массива к правому Массив, заполненный 1 и 0. Найти путь, состоящий из нулей, от точки до точки. Найти самый короткий путь из первой вершины в последнюю по счету в заданном графе методом динамического программирования
Выбрать самый короткий путь в задаче о шахматах Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|