i нет в маршруте).
i нет в маршруте). Во втором и третьем массивах запоминаются по принципу стека текущий и наилучший маршруты соответственно. Для работы со стеками необходимы указатели - переменные yk и yk_max. Логика перебора поясняется на нижеприведенном рисунке. Ищем путь из города с номером i.
Фрагмент основной программы.
begin
...
FillChar(New,SizeOf(New),true);
yk:=1;Way[yk]:=1;pp:=true;yk_max:=0;
rec(1);
...
(* Вывод результата *)
...
end.
И процедура поиска решения.
procedure rec(i:byte);
var j,pn,pv:byte;
begin
if i=n then pp:=false; (* меняем направление *)
if (i=1) and not pp then begin
(* вернулись в первый город *)
if yk>yk_max then begin (* запоминаем решение *) yk_max:=yk;
way_r:=way;
end;
pp:=true; (* продолжаем перебор *)
end;
(* по направлению определяем номера просматриваемых городов*)
if pp then begin pn:=i+1; pv:=n end
else begin pn:=1; pv:=i-1 end;
for j:=pn to pv do begin if West[i,j] and New[j] then
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа