Cho hai vectơ số nguyên có độ dài không bằng nhau, làm thế nào tôi có thể xác định kết quả tối đa có thể từ việc tích lũy chọn tối đa giữa các cặp số tương ứng giữa hai vectơ có các số 0 thêm vào vectơ ngắn hơn để bù cho chênh lệch kích thước?
Ví dụ, hãy xem xét hai vectơ sau đây làm đầu vào:
[8 1 4 5]
[7 3 6]
Các lựa chọn để chèn số không và tổng kết quả là:
[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
Do đó, trong trường hợp này, thuật toán sẽ trả về 25.
Tôi có thể làm điều này bằng vũ lực bằng cách tính toán cho tất cả các hoán vị của việc đặt các số 0 vào vectơ nhỏ hơn (như đã làm ở trên) nhưng điều này sẽ tốn kém về mặt tính toán, và tệ nhất là trong trường hợp khi một vectơ có kích thước bằng một nửa.
Có cách nào để tính toán câu trả lời theo thời gian tuyến tính tỷ lệ với độ dài của vectơ dài hơn ngay cả khi các vectơ khác nhau về chiều dài không? Nếu không, chúng ta có thể làm tốt hơn số lượng hoán vị giai thừa được chọn không?