Задача о рюкзаке с ограниченным числом предметов
Задача найти наилучший расклад рюкзака, зная не только веса и стоимость, но и максимальное количество каждого товара.
for i in range(1, n + 1):
for j in range(0, W + 1):
for cnt in range(min(k[i], W // a[i]) + 1):
if a[i] * cnt <= j:
dp[i][j] = max(dp[i][j], dp[i - 1][j - a[i] * cnt] + c[i] * cnt)
Я нашёл данный код в интернете и я уверен, что он работает, но я не понимаю что в массиве dp
является ответом и какова база индукции?