首页 > 编程知识 正文

python中计算排列组合的函数(python列表字符串排列组合)

时间:2023-05-06 03:45:41 阅读:68241 作者:4320

组合算法

本程序的想法是打开数组,其下标表示从1到m的个数,数组元素的值为1表示其下标

将检查代表数量,如果为0,则不检查代表数量。

首先初始化,将数组的前n个元素放在1上,指示第一个组合是前n个。

然后,从左向右扫描数组元素的值“10”组合,找到第一个“10”组合,并将其更改为

在组合“01”的同时,将其左侧的所有“1”移动到数组的左端。

当最初"1"移动到数组的m-n的位置、即n个"1"全部移动到右端时

到了最后的组合。

例如,求出5中3的组合:

1110//1、2和3

101010//1,2,4

01110//1,3,4

01110//2,3,4

10001//1、2和5

10101//1,3,5

01101//2、3和5

10011//1,4,5

1011//2、4和5

0111//3、4和5

使用python实现:

组=[ 1,1,1,0,0,0 ]

group _ len=len (组)

#计算次数

ret=[group]

ret _ num=(group _ len * (group _ len-1 ) * ) * (group_len - 2 ) )/6

forIinxrange(ret_num-1 ) :

"第一步:先把10换成01."

number1_loc=group.index(1)。

number0_loc=group.index(0) )。

#替换位置从前0个位置开始

location=number0_loc

判断第#1个0和第1个1的位置中的哪一个先,

#最初0的位置小于最初1的位置时,

#那么,置换位置从前一个位置的后面查找

if number0_loc number1_loc:

location=group [ number1_loc : ].index (0) number1_ loc

组[位置]=1

组[位置-1]=0

'步骤2 :将前10个前面的所有1放在数组的最左边'

if位置-3=0:

if group [ location-3 ]==1and group [ location-2 ]==1:

组[位置-3]=0

组[位置-2]=0

组[0]=1

组[1]=1

elif group[location - 3]==1:

组[位置-3]=0

组[0]=1

elif group[location - 2]==1:

组[位置-2]=0

组[0]=1

打印组

ret.append (组)

全数组算法

从1到n,输出全部排列,一共n! 酒吧。

分析:用n进制的方法吧。 设置n个单元格的数组,对第一个单元格执行加法操作,使其满n进制

一。 每次添加时,判断各数组单元格有无重复,如果有,则返回进行添加操作。 没有

表明得到了数组方案。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。