Нахождение кратчайшего пути, без использования графов |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Нахождение кратчайшего пути, без использования графов |
HelpAusHeaven |
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 57 Пол: Мужской Репутация: 0 |
Подскажите, где почитать или подскажите как осуществляется нахождения кратчайшего пути без использования графов, чистой рекурсией??
-------------------- Рассылка: "Решение Вами Предложенных Задач На Языке PASCAL. Алгоритмы на PASCAL."
Подписка по e-mail: comp.soft.prog.pascal123-sub@subscribe.ru |
virt |
Сообщение
#2
|
Знаток Группа: Пользователи Сообщений: 419 Пол: Мужской Репутация: 6 |
Код program recursion; const maxn=10; var a,b:array[1..maxn,1..maxn]of integer; i1,j1:integer; i,j,n:integer; cou:integer; procedure init; begin readln(n); for i:=1 to n do for j:=1 to n do read(a[i,j]); end; procedure solve(i,j:integer); begin if (i<1) or (i>n) or (j<1) or (j>n) or (a[i,j]=1) then exit; if b[i,j]>cou then b[i,j]:=cou; a[i,j]:=1; inc(cou); solve(i+1,j); solve(i-1,j); solve(i,j+1); solve(i,j-1); dec(cou); end; procedure out; begin writeln(b[i1,j1]); end; begin init; cou:=0; for i:=1 to n do for j:=1 to n do b[i,j]:=maxint; for i:=1 to n do for j:=1 to n do if a[i,j]=2 then begin i1:=i; j1:=j; end; solve(1,1); out; end. Сообщение отредактировано: AlaRic - -------------------- |
Текстовая версия | 9.05.2024 7:20 |