1. 程式人生 > >python 小練習 11

python 小練習 11

lis 取出 pre 練習 全部 例如 col sort 自己

桌子上有一堆數量不超過20的果子,每個果子的重量都是不超過20的正整數,全部記錄在列表 L 裏面。小明和小紅決定平分它們,但是由於他們都太自私,沒有人願意對方比自己分得的總重量更多。而果子又不能切開,所以最後他們商量好的平分方案是這樣的:他們可以把某些果子扔掉,再將剩下的果子平分,請你求出在這種方案下他們每人最多可以分得的糖果重量。

例如,L = [1,2,3,4,5],則輸出:7

L = [1,3,6],則輸出:0

說明:對於樣例1,他們最好的方案是把重量為 1 的果子扔掉,一人分得總重量為 7 的果子;樣例2無法平分果子,因此答案是0。

註意:數據已於2017/05/03加強,原來能通過的代碼不一定能夠再次通過。

沒有AC:還是留有疑問

import copy
L = [4,1,2,3,5]
L.sort()
Total_weight = sum(L)

rsl = set()
rsl.add(0)

for i in range(len(L)):         #用集合的方法取出所有可能的和
    temp = copy.deepcopy(rsl)
    for value in temp:
        rsl.add(L[i]+value)
lst = list(rsl)

for i in range(1,len(lst)):     #關鍵是我沒有辦法得到具體是pop掉了哪些數
    weight 
= Total_weight - lst[i] if weight%2 == 0: t = int(weight/2) if t in lst: print(t) break else: print(0)

python 小練習 11