我在python编程中遇到排列组合一个问题。大概描述如下:
现在有一百个工人,彼此不认识,编号依次为1-100,每天派10个人组成一批出去劳动,假设工人们一同劳动后就各自相互认识了,要求每天派出去劳动的工人都是两两互相不认识的(简而言之就是每个人都没有熟人),请问这样的可以坚持多少天?具体的组合是怎么样?
如果能用python编程解决更好了。大谢!
首先肯定不止12种。例如:你把100个数按每行10个,共10行列出来,可以看成一个10x10的阵列。然后你会发现,每一行(共10行)满足要求,每一列(共10列)满足要求。于是这就有了20个组合。当然还有其他。所以肯定不止12中组合。
能给个具体的代码吗?c也行啊。我最终还是要具体的组合方式。
追答我的O(n^2)算法只能找到69组,选组的技巧没有掌握,所以找不到也验证不出那个110组。
花时间先把数理搞通是关键。。代码算抛砖引玉吧。你有更好的可以也告诉我
代码有“不适合发表的内容”不能贴出,地址
http://hi.baidu.com/imkow/item/7b271acf70e1b3c4984aa080
你看看吧
恩,你的算法是对的,不过结果错了。100*99/(10*9) = 110。
问下你熟悉编程吗,能不能找到编段代码找出这些组合来。我最终还是想要知道这些组合。谢谢了。
99/9我计算的竟然等于10,汗。
这个结果可以有很多种,但是不管怎么组合,最终结果只有110种,我懂一点python
我的算法很简单,100个人,两两握手(或者说见面)的次数是100*99/2
而10个人两两握手的次数是10*9/2,所以用100*99/(10*9)的数字就是最大的天数。
这个结果也许不对,但是绝不可能比这个天数更多。
这其中有个问题,比如100个人每次抽9个人出去干活,按照这个算法是不能整除的,100*99/(9*8)不能整除,最大的天数就是结果的整数部分。
上述结果是我猜的,未经验证。
你能不能把你的思路通过代码实现呢。我最终还是想知道最终的组合方式。我也觉得可能会有很多个110个组合方案。
我验证过9个人每天派出去3人,和16个人每天派出去4个人的情况。你这种计算方法得出的结果和我枚举出的结果是一致的。
我也是初学,我试下,但不能保证给出答案。