我有一個手提箱清單,每個手提箱suitcase都有一個name和一個weight與之關聯的。我想撰寫一個函式,將這些手提箱組合在一起,使它們的權重始終形成 amultiple of 8并回傳已形成的元組的串列。如果有一個手提箱不能形成 8 的倍數,那么這個手提箱會被 1“填滿”(這應該只是最后的手段)。例如:
sc1 = suitcase("sc1", 5)
sc2 = suitcase("sc2", 1)
sc3 = suitcase("sc3", 3)
sc4 = suitcase("sc4", 14)
sc5 = suitcase("sc5", 4)
sc6 = suitcase("sc6", 1)
sc7 = suitcase("sc7", 8)
sclist = [sc1,sc2,sc3,sc4,sc5,sc6,sc7]
sorted_tuple = sort_suitcases(sclist)
sorted_tuple = [(sc7),(sc1,sc3),(sc4,sc2,sc6),(sc5,{1,1,1,1})] # this is obviously only one of many possible combinations.
# having only one big tuple would obviously also be a solution
我的方法是遍歷每個值并遍歷串列中剩余的每個值,看看它們的權重組合是否為%8,但我覺得這種方法對于大資料集不是很有效。我錯過了什么嗎?
uj5u.com熱心網友回復:
- 根據重量 % 8 將手提箱分成 8 組。
- 將組中的成員配對,得出 8 的倍數:1 & 7, 2 & 6, 3 & 5, 4 & 本身。
- 處理那些無法配對的人(更大的團體和填充)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/491995.html
