Подзадача: Найти минимальное число по первым k числам.
Вот как вы сводите проблему к уже решенным подзадачам:
Пусть F(k)
будет минимальной суммой квадратов при решении для a1, a2, ... ak
.
Теперь
F(2) = (a1+a2)^2
F(3) = (a1+a2+a3)^2
F(4) = min { (a1+a2+a3+a4)^2, (a1+a2)^2 + (a3+a4)^2 }
F(5) = min { (a1+a2+a3)^2 + (a4+a5)^2, (a1+a2)^2 + (a3+a4+a5)^2 }
F(n) = min {
F(n-2) + (a[n-1]+a[n])^2,
F(n-3) + (a[n-2]+a[n-1]+a[n])^2,
F(n-4) + (a[n-3]+a[n-2]+a[n-1]+a[n])^2
}
Вы можете написать простую функцию, которая вычисляет F (k) для увеличения значений k и сохраняет их в массиве.