достаточно знать
достаточно знать значения только в предыдущей строке. Более того, значения очередной строки можно вычислить, прямо на месте предыдущей. Это можно сделать, если вычислять значения элементов не слева направо, а справа налево, т.е. идя с конца массива в начало. Дело в том, что если вычислять значения элементов слева направо, то возможно многократное использование массы некоторого предмета в наборе, тогда как при вычислении справа налево это невозможно. Поэтому, для вычисления значения функции Т достаточно использовать одномерный массив, размер которого ограничен требуемой суммарной массой плюс 1, вначале значение нулевого элемента равно 1, а всех остальных равно 0.
T[0, 0]: = 1;
for i:=1 to 5 do
T[i, 0] = 0;
for i:=1 to 5 do
for j:=16 to M[i] do
T[ j] = max(T[ j], T[j - M[i]]);
Однако при этом уже невозможно прямо восстановить структуру решения. Чтобы устранить этот недостаток, обычно используется подход, при котором для каждой позиции запоминается позиция-предшественник,
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа