组合数学实现和谜题

5

enter image description here

我在一张图片里找到了这个谜题。根据我的思考,总的解法数量应该是

2*comb(7,i) for i <- 1 to 7 这里的 comb 定义如下。请问我的方法正确吗?我关心的是我得到的结果,而不是下面写的函数。

def comb(N,k): 
    if (k > N) or (N < 0) or (k < 0):
        return 0L
    N,k = map(long,(N,k))
    top = N
    val = 1L
    while (top > (N-k)):
        val *= top
        top -= 1
    n = 1L
    while (n < k+1L):
        val /= n
        n += 1
    return val

不要介意我在短时间内问了太多问题。我只是热情而已。


这是一个恶作剧问题。只有6个孩子;) - sizzzzlerz
@sizzzzlerz:哈哈,太对了... - unutbu
1个回答

6
有7!种方法可以排列孩子(第一位置有7个选择,第二个位置有6个选择,第三个位置有5个选择,以此类推)。
每个孩子可以向内或向外。这就像是每个位置上的额外位。 因此,需要乘以2 ** 7(即每个位置上有2个选择)。
对于每个顺序,如果你旋转圆圈,你会得到“相同”的顺序。有7个旋转产生相同的顺序,因此要除以7。
答案是2 ** 7 * 7!/ 7 = 128 * 6!= 92160。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接