я вполне могу сделать и константный размер элементов вектора, скажем
битов, такого размера хватит для
,
Тогда можно сделать и константный размер вектора
, этого тоже хватит для
. И получим что алгоритм требует
памяти.
В массовых задачах асимптотику времени и памяти нужно считать на бесконечности.
почему ваш алгоритм работает?
Да собственно он считает по той же формуле, только немного в другом порядке. Перед выполнением очередного внутреннего шага, в
cache[j] лежит
при
и
при
. После этого шага, соответственно, в
cache[i + k] появляется
.
Ну и цикл идет не до
, а до
, т.к. остальные значения нам не нужны - добавление очередного слагаемого, не меньше
, уже даст число, большее
, которое нас не интересует.