我声明了这些数组
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的位置)
答案 0 :(得分:0)
您不需要算法来计算列表中元素的不同排序方式,一个简单的公式就足够了。
您可以订购N个独特元素的不同方式的数量是N! (这是N因子)。 如果元素有重复(如您的情况),则除以您可以订购这些重复项的方式的数量。
因此,对于20 0
和20 1
的示例,答案是(40!)/(20!* 20!)= 137,846,528,820
(那1313亿个订购方式)