看板 Prob_Solve 關於我們 聯絡資訊
※ 引述《mmnnmn (12k3jladk)》之銘言: : 最近我遇到一個問題 : 假設有n個正數 : a1,a2,....an : 有沒有有效率一點的方法把這n個數分為2個set : {s1與s2沒有交集,且s1與s2聯集為這n個數} : 使得 sum(s1) == sum(s2) : 不完全相等也可以,那麼差要最小 : 目前我只想到暴搜,複雜度是指數成長>< : 懇請大家不吝指教..謝謝 如果隨便分的話.... 不就,開一個array存現有sum 對每個ai(i belong to 1~n),丟進去sumtable對所有sum加ai 最後再把ai丟入sum table. sum table的element不要重複,這可以用一段連續記憶體來存!! n個數字,和最多應該是2^n-1 這樣好像有點多. 所以就加點小cut好了. 就你想要做的是,找到最接近他的平均值的, 因為只要有一個最接近,另一個也會最接近!(這你想想吧!應該Ok) 所以只要找比較小的那個就好喵! 所有超過平均值的都可以不要. namely, if sum[i] + aj > mean 就不要丟入 sum table. 這是在下直覺的想法喵>w<. 歡迎指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.45 ※ 編輯: scan33scan33 來自: 140.112.30.45 (09/05 21:59) ※ 編輯: scan33scan33 來自: 140.112.30.45 (09/05 22:03)
scan33scan33:有要|s1|-|s2|=1的話作法會不一樣唷喵!>w< 09/05 22:04
mmnnmn:感謝scan33scan33大,正整數的確有差 m(_ _)m 09/06 11:28