37,726
社区成员
![](https://csdnimg.cn/release/cmsfe/public/img/topic.427195d5.png)
![](https://csdnimg.cn/release/cmsfe/public/img/me.40a70ab0.png)
![](https://csdnimg.cn/release/cmsfe/public/img/task.87b52881.png)
![](https://csdnimg.cn/release/cmsfe/public/img/share-circle.3e0b7822.png)
def checkio(data):
dataLen = len(data)
'''data.sort()'''
if dataLen==1:
return data[0]
listDiff = []
for i in range(dataLen-1,-1,-1):
leftList = [data[i]]
rightList = data[:]
del rightList[i]
for y in range(dataLen-2,-1,-1):
if rightList[y]:
addItem = rightList[y]
leftSum = sum(leftList)
rightSum = sum(rightList)
if leftSum+2*addItem<=rightSum:
leftList.append(addItem)
del rightList[y]
leftSum = sum(leftList)
rightSum = sum(rightList)
listDiff.append(abs(leftSum-rightSum))
listDiff.sort()
result = listDiff[0]
#replace this for solution
return result
def checkio(data):
sd = sum(data) # all sum
std = sorted(data) # sort items
sm = chk(sd/2,std) # find the biggest value
return sd-sm-sm # find the max_half-min_half
# 0-1 knapsack solution
def chk(v,s): # value, item
if len(s)==0 or v<s[0]: # no item or the smallest cannot be put into bag
return 0
else: # some can be put into bag
pv = []
for i in range(len(s)):
if s[i]<=v:
cv = max(s[i]+chk(v-s[i],s[:i]+s[i+1:]),chk(v,s[:i]+s[i+1:]))
pv.append(cv)
if not pv:
return 0
else:
return max(pv)
a=[3,56,78,1,5,9,90,39,20,73,91,30,26]
def split(alist):
alist.sort()
alist.reverse()
resultA=[]
resultB=[]
for i in alist:
if sum(resultA)>sum(resultB):
resultB.append(i)
else:
resultA.append(i)
return resultA,resultB,sum(resultA)-sum(resultB)
print(split(a))