python - 组合数学实现和难题

标签 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

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

最佳答案

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

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

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

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

关于python - 组合数学实现和难题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4830376/

相关文章:

python - 如何删除 Django 模板中字符周围的空格?

Python 的 in (__contains__) 运算符返回一个 boolean 值,其值既不是 True 也不是 False

python从第三台机器连接到mysql

java - 如何根据角度和距离获取坐标系中某点的坐标

algorithm - 这种重复可以有多少个子问题,同时仍然比初始重复更快?

arrays - 6 个位置内 3 个元素的排列

python - 在每个客户的客户表单 View 中显示逾期付款总和

检测两个矩形相交的算法?

algorithm - 谷歌面试算法拼图 : expected size of the largest connected component in a random simple graph (N nodes, N 边)?

regex - 是否有 "match the following in any order"或 "match any permutation"的正则表达式?