组合实现和谜题

时间:2011-01-28 16:07:21

标签: python math combinatorics

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

别介意我在短时间内提出太多问题。我很热情。

1 个答案:

答案 0 :(得分:6)

有7个!排列孩子的方法(第一个选择7个,第二个选择6个,第三个选择5个,等等)

每个孩子都可以面向内或外。这就像每个位置的额外位。 所以乘以2 ** 7。 (即每个地点有2个选择)。

现在,对于每个订单,如果您旋转圆圈,您将获得“相同”的排序。有7个旋转都产生相同的顺序,因此除以7。

答案是2 ** 7 * 7!/ 7 = 128 * 6! = 92160。