作者zhman (閒閒的人)
看板PHP
標題Re: [請益] 想請教一種計算篩選的方法..
時間Mon Mar 27 13:48:26 2006
我提供一個簡單的greedy演算法給你參考.
可以先假設沒有一個數大於你所設定的最大和M(如:100).
1.將原始資料由小到大排序.
假設排序好的陣列為S,而S[i]<=S[j] if i<=j.
2.選擇最大可選擇的數為第一個數.S[k]
3.選擇一個最大的y,使得y<k and S[y]+S[k]<=M.
4.選擇一個最大的x,使得x<y and S[x]+S[y]+S[k]<=M.
5.如果y,x存在,則S[k],S[y],S[x]即為其中一組解,將其儲存在你需要的地方,
並在S中刪去.
6.如果y,x不存在,則刪去S[k].
7.回到2.,直到S為空集合為止.
實作的部份就自己試試看吧.
如果數目不大的話,就用最簡單的寫法就好了.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.90.149
※ 編輯: zhman 來自: 140.112.90.149 (03/27 13:52)
1F:推 litthe:嗯嗯~感謝 我試看看 :) 03/27 23:35