从任意M个数中选出N个数的所有组合数(100分)

  • 主题发起人 guoyunzhi
  • 开始时间
G

guoyunzhi

Unregistered / Unconfirmed
GUEST, unregistred user!
这个问题困了我一下午。这个M个数是指可以在100以内数如1-99中的任意取M个,
例如在1-99中取20个,再从这20个中取8个的所有组合。我看了以前有关之方面的
贴子都是从0开始的20个。是连续性的。这是不行的。高手能否赐教,尽量详细些。
 
你的M个数是怎么取的?如果已经取好了那很简单先(利用程序)利用排列组合的公式,
得出所有的组合的个数,然后建立动态数组,最后利用循环从第一个开始每次取8个取
到后跟数组中以前得到的组合比较,如果没有则为所求
 
不一样吗?
先从100个中取出20个放入一个数组,再从这个数组取出8个的组合呀
 
其实可以先求出排列(用循环嵌套),然后比较个组的相同值
 
我不是已经给你回信了吗?
将第一次取得的数放到一个TStringList中,第二次生成结果的时候用 mstr:=mstr+LastSL+' ';
即可。
 
随机数产生第一个1<=n<100
放入集合中,判断集合的元素个数<=20
同样在一个20个元素的集合中取任意 一个放入一个8个元素的集合中,
这样可以得到一个,
所有组合的数量应该是一个统计的问题,99!/79!*20!/12!
不知道对不对(不保证正确),
取得每一种组合安顺序最好取了,
如果希望得到一个随机的这样的所有组合里面的一个
可以在排列好的所有组合里面用随机数产生一个不行么?
提个建议而已,顺便混点分数
 
我举个例子 现有 01,23,26,28,12,23,29,31,02,11的10个数中,任意7个的所有
组合数。当然,总组合数利用公式就可得知。我要的是任意8所有能组合啊.creation-zy
所写的程序是按顺序的。我已把这个10个数存在数组了。其后就不知道怎么做了。能否给
出代码?谢谢
 
是7个的任意组合。
 
请问什么是种子???
 
>>所写的程序是按顺序的
??难道你不要将所有可能都列出来,而是只要随机性的取一个组合吗?
 
以个10个数中任意7个的组合。当然要把所有的组合到列出来。而creation-zy你给我的
只能从10个取7个的组合。这样,所有的组合是这样了1,2,3,4,5,6,7/1,2,3,4,5,6,8/
......。并没有指定这10个数啊。
 
将你第一次生成的10个数放入一个数组 GenNums[],以后简单的进行映射即可。
eg:
GenNums为 01,23,26,28,12,23,29,31,02,11
那么,如果你生成的10取7的组合为: 0,1,4,5,6,8,9
最终结果就是: GenNums[0],GenNums[1],GenNums[4],GenNums[5]...
即: 01,23,12,23,...
懂了吗?
 
道理是一样的,不连续,用数组就可以了。
 
你不会连数组都没用过吧?
 
接受答案了.
 
顶部