作者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