Re: [請益] 想請教一種計算篩選的方法..
我提供一個簡單的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)
推
03/27 23:35, , 1F
03/27 23:35, 1F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章