注册 登录
编程论坛 Delphi论坛

[求助]复杂算法问题

freeman8138 发布于 2007-09-25 17:15, 1258 次点击
现有N组18码,能否利用编程实现将N组18码里筛选出同时成立M=?,P=?的数据出来,N的范围在250以内,M的范围在100以内,P的范围在0-5。

如有10组18码:(一共为10组,所以N=10)

04 06 07 09 10 12 15 16 18 19 23 24 26 29 30 31 32 34
04 06 07 09 10 12 16 17 18 19 21 23 24 26 28 29 30 32
02 04 05 06 12 14 15 18 19 20 22 24 25 26 28 30 31 32
01 02 04 06 08 09 10 11 12 13 15 16 17 18 19 20 21 22
01 04 06 08 09 11 14 16 18 19 21 22 24 26 28 29 31 34
02 04 06 07 10 11 13 15 16 18 20 21 23 24 26 28 31 33
01 04 07 09 11 12 15 16 18 20 21 23 25 27 29 30 32 33
01 02 04 05 07 08 10 11 12 13 15 18 20 21 23 24 28 29
02 03 04 05 06 08 10 12 14 16 20 21 23 24 25 28 31 34
01 02 03 06 07 09 10 13 14 15 17 18 21 24 28 30 32 33

有4组以下的条件是成立的,(所以M=4)

3=04 06 07 09 10 12 16 17 18 19 21 23 24 26 28 29 30 32,(表示这行18个号码里出了04、09、24这3个号码)
3=01 02 04 06 08 09 10 11 12 13 15 16 17 18 19 20 21 22,(表示这行18个号码里出了04、09、22这3个号码)
3=02 04 06 07 10 11 13 15 16 18 20 21 23 24 26 28 31 33,(表示这行18个号码里出了04、24、31这3个号码)
3=02 03 04 05 06 08 10 12 14 16 20 21 23 24 25 28 31 34,(表示这行18个号码里出了04、24、31这3个号码)

但在最后如果多一组

3=04 06 07 09 10 12 15 16 18 19 23 24 26 29 30 31 32 34,(表示这行18个号码里已经出了“4 9 22 24 31”中的04、09、24、31这4个号码,而条件只写作3=则不成立,应为4=)

3=的意思是=后面的18个码里只出3个。所以P=3(注意:是“只”出3个)

而这3个是指“4 9 22 24 31”这5个数里的其中3个。上面4组每1组18个号码里所出的3个号码都属于4 9 22 24 31这5个号码里的其中3个。所以对这5个数来说,上面的4组条件都是正确并且同时成立的。

实际上5个数字是未知值。上面的“4 9 22 24 31”我只是举个例子,可以是1-35个数里的任意5个。

如果同时满足M=某值,P=某值的时候,可能会筛选出很多种组合符合“1-35个数里的任意5个”。即比如说N=200,M=50,P=3时,是指200组18码里,有50组符合同时只出3个数的组合。而这3个数可能是“4 9 22 24 31”中的3个,也可能是“12 23 25 27 35”中的3个......

希望软件可以读入和保存txt数据,有P和M的下拉选框或输入框。最好只要设定M=某值,P=某值时,可以直接显示出符合条件的5个数,或者将符合条件的多个M组18码列出来

再简单的说可以认为是在N组18码里找出M组18码,而这M组18码的重号是5个,找重号。

[此贴子已经被作者于2007-9-25 17:17:05编辑过]

4 回复
#2
nongen2007-09-29 17:02
编码看不懂。
#3
浅色的回忆2007-10-04 02:27
同LS
#4
半空烟雨2007-10-05 13:52
看不懂你说的啥

描述不清楚
#5
joooyooo2007-10-20 11:59
LZ为什么一定要保存为TXT文件呢?我感觉是不是用EXCEL更方便.这样程序就不用一次把所有的数据都读入内存了!呵呵!描述我大致看明白了!呵呵!如果Lz要写源码的话,有时间给你写一下!我邮箱:895150@
1