使用python实现:
group = [1, 1, 1, 0, 0, 0]
group_len = len(group)
#计算次数
ret = [group]
ret_num = (group_len * (group_len - 1) * (group_len - 2)) / 6
for i in xrange(ret_num - 1):
'第一步:先把10换成01'
number1_loc = group.index(1)
number0_loc = group.index(0)
#替换位置从第一个0的位置开始
location = number0_loc
#判断第一个0和第一个1的位置哪个在前,
#如果第一个0的位置小于第一个1的位置,
#那么替换位置从第一个1位置后面找起
if number0_loc = 0:
if group[location - 3] == 1 and group[location - 2] == 1:
group[location - 3] = 0
group[location - 2] = 0
group[0] = 1
group[1] = 1
elif group[location - 3] == 1:
group[location - 3] = 0
group[0] = 1
elif group[location - 2] == 1:
group[location - 2] = 0
group[0] = 1
print group
ret.append(group) 全排列算法
从1到N, 输出全排列,共N!条。
分析:用N进制的方法吧。设一个N个单元的数组,对第一个单元做加一操作,满N进
一。每加一次一就判断一下各位数组单元有无重复,有则再转回去做加一操作,没
有则说明得到了一个排列方案。
查看更多关于python实现高效率的排列组合算法的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did86830