网易笔试2020-8
现在有n个物品,每个物品都有一个价值,现在想将这些物品分给两个人,要求这两个人分到的物品价值总和相同(个数可以不同,总价值相同即可),剩下的物品就要扔掉,现在想知道最少需要扔多少价值的物品才能满足要求分给两个人。
import sys
T = int(sys.stdin.readline().strip())
res = float('inf')
def dfs(op, x, y):
global res
global length
global sum1
global nums
if op >= length:
if x == y:
res = min(res, sum1-x-y)
return
# print("op",op)
dfs(op+1, x+nums[op], y)
dfs(op+1, x, y+nums[op])
dfs(op+1, x, y)
for idx in range(T):
n = int(sys.stdin.readline().strip())
nums = list(map(int, sys.stdin.readline().split()))
length = len(nums)
sum1 = sum(nums)
dfs(0, 0, 0)
print(res)