簡體   English   中英

如何交換兩個數組的成員,以使兩個數組的元素之和的差最小?

[英]How to swap members of two arrays so that the difference of sum of the elements of both arrays be minimum?

給定兩個無序數組array1array2 ,它們的長度均為LEN 對於任何i (0<=i<LEN) ,我都可以交換array1[i]array2[i] 現在,我必須以某種方式交換它們,以使array1array2的元素之和之間的差最小。

例如:

array1=[1, 3, 5]
array2=[2, 4, 9]

現在,如果我交換兩個數組(5和9)的第三個成員,則差變為(1 + 3 + 9)-(2 + 4 + 5)= 2。

我發現了使用遞歸的解決方案。 在我的解決方案中,我檢查所有有效的組合,並且差異最小的地方就是我的答案。 但是這里的運行時復雜度是O(2^LEN) 我怎樣才能更有效地做到這一點?

PS陣列索引從0開始。

考慮第三個數組,其中第ith條目是array1array2 ith值的絕對差。 為新數組中的這些差異分配符號等同於確定是否要交換原始數組中的值。 現在,您正在嘗試解決使第三個數組中的(潛在符號交換)值的總和最小化的問題。 這是分區問題的優化版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM