задача решена, т.е.
задача решена, т.е. известны значения d[j] (j ) - количество городов в наилучшем маршруте, заканчивающемся в городе с номером j.
Итак:
d[i]:=0;
for j Qi do
if d[j]+1>d[i] then d[i]:=d[j]+1;
Остается открытым вопрос, а где же маршрут? Ибо значение d дает только количество городов, через которые он проходит. А для этого необходимо запомнить не только значение d[i], но и номер города j, дающего это значение. Возможно использование следующей структуры данных:
A:array[1..max] of record
d, l:byte;
end;
И реализация сказанного имеет вид:
FillChar(A,SizeOf(A),0);
A[1].d:=1;
for i:=2 to n do begin
for j:=1 to i-1 do if west[j,i] then if A[j].d+1>A[i].d then begin
A[i].d:=A[j].d+1;
A[i].l:=j;
end;
end;
Видим, что это не что иное, как метод динамического программирования в действии. Осталось выполнить обратный просмотр массива A по значениям поля l, начиная с элемента A[n].l и вывести из массива name:array[1..max] of string[15]
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа