из которой мы в
из которой мы в нее попали в текущую позицию. Эта позиция определяется аргументом, на котором достигаемся оптимум (максимум, минимум) рассматриваемой функции. В данном случае для каждой позиции i можно определить номер первого предмета, для которого значение Т(i) стало максимальным (в данном случае равным единице).
{Вычисление значений и запоминание предшественника (Father)}
T[0]: = 1;
Father[0]:=0
for j:=1 to 16 do
begin
T[j] = 0;
Father[j]:=0
end;
for i:=1 to 5 do
for j:=16 to M[i] do
if T[ j] < T[j - M[i]] then
begin
T[ j] := T[j - M[i]] ;
Father[j]:=i;
end;
{Восстановление решения}
sum:=16;
i:= Father[sum];
While (i>0) do
Begin
Writeln(i);
sum:=sum-M[i];
i:= Father[sum];
End;
<<< Предыдущий урок Следующий урок >>>
| Новости | Регистрация | Курсы | Карта сайта | Контактная информация |
Курс 1
Глава G
Понятие задачи и подзадачи
Использование таблиц при решении подзадач
Использование двумерных
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа