|
0 / 0 / 0
Регистрация: 05.11.2011
Сообщений: 44
|
|
Найти самый короткий путь от точки до точки в матрице09.10.2012, 21:29. Показов 7812. Ответов 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. Найти путь, состоящий из нулей, от точки до точки. Найти самый короткий путь из первой вершины в последнюю по счету в заданном графе методом динамического программирования
Выбрать самый короткий путь в задаче о шахматах Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|