задача решена, т.е.


задача решена, т.е. известны значения 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]
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz