Dati due vettori di numeri interi di lunghezze forse non uguali, come posso determinare il massimo risultato possibile dall'accumulo scegliendo il massimo tra le coppie di numeri corrispondenti tra i due vettori con zeri extra inseriti nel vettore più corto per compensare la differenza di dimensioni?
Ad esempio, considerare i seguenti due vettori come input:
[8 1 4 5]
[7 3 6]
Le scelte per inserire lo zero e la somma risultante sono:
[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
Pertanto, in questo caso, l'algoritmo dovrebbe restituire 25.
Potrei farlo con la forza bruta calcolando tutte le permutazioni del posizionamento degli zeri nel vettore più piccolo (come appena fatto sopra), ma questo sarebbe computazionalmente costoso, e peggio nel caso in cui un vettore abbia esattamente la metà delle dimensioni dell'altro.
C'è un modo per calcolare la risposta in tempo lineare proporzionale alla lunghezza del vettore più lungo anche quando i vettori differiscono in lunghezza? In caso contrario, possiamo fare meglio del numero di permutazioni fattoriali scelte?