З огляду на два вектори цілих чисел, можливо, неоднакових довжин, як я можу визначити максимальний результат, можливий від накопичення вибору максимального між відповідними парами чисел між двома векторами із додатковими нулями, вставленими у коротший вектор, щоб компенсувати різницю розмірів?
Наприклад, розгляньте наступні два вектори як вхідні дані:
[8 1 4 5]
[7 3 6]
Вибір для вставки нуля та отриманої суми:
[0 7 3 6] => Maximums: [8 7 4 6] => Sum is: 25
[7 0 3 6] => Maximums: [8 1 4 6] => Sum is: 19
[7 3 0 6] => Maximums: [8 3 4 6] => Sum is: 21
[7 3 6 0] => Maximums: [8 3 6 5] => Sum is: 22
Тому в цьому випадку алгоритм повинен повертати 25.
Я міг би зробити це грубою силою, обчисливши всі перестановки розміщення нулів у менший вектор (як це було зроблено вище), але це було б обчислювально дорого, і найгірше у випадку, коли один вектор рівно наполовину менший за інший.
Чи існує спосіб обчислити відповідь за лінійним часом, пропорційним довжині більш тривалого вектора, навіть коли вектори відрізняються за довжиною? Якщо ні, то чи можемо ми зробити кращу кількість обраних факторіальних перестановок?