在图像中发现了这个谜题。按照我的想法总共的路数应该是
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/