python 小練習 11
阿新 • • 發佈:2017-08-02
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