计算我们可以组织数组的不同方式

时间:2017-05-23 08:19:11

标签: python arrays algorithm math

我声明了这些数组

right_opt = [1 for x in range(20)]
down_opt = [0 for y in range(20)]
lst = right_opt + down_opt

lst等于 - >

[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

我如何计算以多种方式以独特的方式组织这个阵列
例如:(小阵列)
[0,0,1,1] || [0,1,0,1] || [1,0,0,1]
但是[0,0,1,1]不能再显示(即使我们用第二个切换前0的位置)

1 个答案:

答案 0 :(得分:0)

您不需要算法来计算列表中元素的不同排序方式,一个简单的公式就足够了。

您可以订购N个独特元素的不同方式的数量是N! (这是N因子)。 如果元素有重复(如您的情况),则除以您可以订购这些重复项的方式的数量。

因此,对于20 0和20 1的示例,答案是(40!)/(20!* 20!)= 137,846,528,820
(那1313亿个订购方式)