''' array_8 调整数组使差最小 # url: http://172.19.241.251/problem/array_8 # description: 有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序; 要求:通过交换 a,b 中的元素,使[序列 a 元素的和]与[序列 b 元素的和]之间的差最小。 # input_description: 输入第一行为用例个数, 每个测试用例输入为两行,分别为两个数组,每个值用空格隔开。 # output_description: 输出变化之后的两个数组内元素和的差绝对值。 # sample input: 1 100 99 98 1 2 3 1 2 3 4 5 40 output: 48 ''' # 背包个鬼啊,这题目出在array专题里,暴力啊! from itertools import combinations import sys def cal(arr): n = len(arr) // 2 comb = combinations(arr, n) sum1 = sum(arr) res = sys.maxsize for i in comb: tmp = abs(2 * sum(i) - sum1) res = min(res, tmp) return res if __name__ == '__main__': case_num = int(input()) while case_num > 0: case_num -= 1 arr1 = list(map(int, input().split())) arr2 = list(map(int, input().split())) arr = arr1 + arr2 print(cal(arr))
这破题目花了我好长时间 调整数组使差最小
最新推荐文章于 2021-08-08 21:53:56 发布