高分求分组算法,请高手们出招(200分)

P

powers

Unregistered / Unconfirmed
GUEST, unregistred user!
M个人,分成N组,若M不能被N整除则将多余的人平均分配的后面的几组中
(比如72个人分7组,则前5组每组10人,后两组每组11人)。
对这些人做有限次的K次分组,要求每一次新分组中的人,曾经被分到同一组的尽量少。
 
首先当然是先取摸以及整除一下,得到要几个分组及每组几个人!
接下来就是考虑同一组的人尽量少。感觉好象可以类似线性同余法加循环这样的方法来分。。。
完全猜想的,如有错误,请多见量!!!
 
定义不明确,意思是
人的个数少呢还是还是人次少?
 
不知道我有没说明确了!我再说说:
1:先用M DIV N来取得有多少个分组。
2。在用M MOD N 来确定有多少个分组里面要加一个人。
这是就确顶了有几个分组及每组有几个人了!!
现在就是生成分组的问题了。
我说的意思是定义一个存放每个人信息的数组(可以是动态数组)。
你要求几个的分组(k)的话就循环几次。
每组的成员用线性同余法来得到,这个方法我现在没发看到,要回去翻书才能讲明白。
不过很多伪随机数就是这么做的。可能DELPHI的随机数也是用这个做的。我没去看,
但我想DELPHI在调用RAMDOM之前要先Randomize;就是为线性同余生成基数的,你可以在
参考参考!!!!错误之处多见量!!!!

 
多人接受答案了。
 

Similar threads

S
回复
0
查看
949
SUNSTONE的Delphi笔记
S
S
回复
0
查看
770
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
961
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
顶部