Учитывая следующую часть реализации алгоритма ранца:ранец Алгоритм: Почему мы используем вес [я-1] вместо веса [I]
// Build table K[][] in bottom up manner
for (i = 0; i <= n; i++)
{
for (w = 0; w <= W; w++)
{
if (i == 0 || w == 0)
K[i][w] = 0;
else if (wt[i - 1] <= w)
K[i][w]
= max(val[i - 1] + K[i - 1][w - wt[i - 1]], K[i - 1][w]);
else
K[i][w] = K[i - 1][w];
}
}
У меня есть основные сомнения, почему мы используем вес [I -1], пока мы проверяем i-й элемент?
Число индексов массива увеличивается от 0, но мы можем выбрать число элементов вверх от 0 или от 1. В последнем случае имеет смысл использовать 'wt [ i-1] ', чтобы записать вес i-го элемента, чтобы избежать потери первого пространства в массиве' wt [] '. Но имеет смысл хранить максимальное значение, достигаемое подмножеством первых элементов 'i', которые используют максимум' w' в 'K [i] [w]' (а не, например, 'K [i-1 ] [w] '), так как мы * должны * вычислить максимальное значение, достигаемое для пустого набора элементов. –