1. 程式人生 > >8、調整陣列使差最小

8、調整陣列使差最小

8、調整陣列使差最小

Description

有兩個序列 a,b,大小都為 n,序列元素的值任意整數,無序; 要求:通過交換 a,b 中的元素,使[序列 a 元素的和][序列 b 元素的和]之間的差最小。

Input

輸入為兩行,分別為兩個陣列,每個值用空格隔開。

Output

輸出變化之後的兩個陣列內元素和的差絕對值。

Sample Input 1 

100 99 98 1 2 3

1 2 3 4 5 40

Sample Output 1

48

import itertools
import sys
if __name__ == "__main__":
    A = []
    for line in sys.stdin:  # 當沒有接受到輸入結束訊號就一直遍歷每一行,以換行加ctrl+D結束
        tempStr = line.split()  # 對字串利用空字元進行切片
        A.extend(tempStr)
    s=len(A)
    h=int(s/2)
    sum1=0
    qs=list(itertools.combinations(A, h))
    for h in range(len(A)):
         sum1+=int(A[h])
    st=len(qs)
    #print(st)
    D=[]
    min=999999999
    for i in range(st):
        D.extend(qs[i])
        sum=0
        for j in range(len(D)):
            sum+=int(D[j])
        gd=sum1-sum
        sg=abs(sum-gd)
        #print(sg)
        if(min>sg):
            min=sg
        D=[]
    print(min)