[求助]复杂算法问题
现有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编辑过]