8、調整陣列使差最小
阿新 • • 發佈:2019-01-09
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)