Python循环实现n的全排列功能
描述:
输入一个大于0的整数n,输出1到n的全排列:
例如:
n=3,输出[[3,2,1],[2,3,1],[2,1,3],[3,1,2],[1,3,2],[1,2,3]] n=4,输出[[4,3,2,1],[3,4,2,1],[3,2,4,1],[3,2,1,4],[4,2,3,1],[2,4,3,1],[2,3,4,1],[2,3,1,4],[4,2,1,3], [2,4,1,3],[2,1,4,3],[2,1,3,4],[4,3,1,2],[3,4,1,2],[3,1,4,2],[3,1,2,4],[4,1,3,2],[1,4,3,2], [1,3,4,2],[1,3,2,4],[4,1,2,3],[1,4,2,3],[1,2,4,3],[1,2,3,4]]
思路:
为1时,结果为1 为2时,结果就是两种:1,22,1(1的前后插入) 为3时,结果就是六种:1,2,31,3,23,2,1(1,2的前中后插入) 3,2,12,3,12,1,3(2,1的前中后插入)
代码:
importcopy deffull_arrange(n): data=[]#中间结果 res=[]#最终结果 ifn==1: return1 res=[[1]] foriinrange(2,n+1): forjinrange(len(res)):#遍历res数组(二维数组) forxinrange(len(res[j])+1):#遍历res数组中的元素(一维数组) data=copy.copy(res[j])#浅拷贝 data.insert(x,i)#在一维数组的不同位置插入元素,获得新的数组 res.append(data) x+=1 j+=1 #删除多余数组(原始数组)最后保留的数据(一维数组的长度)==i whileTrue: iflen(res[0])!=i: res.remove(res[0]) else: break i+=1 returnres print(full_arrange(n))
总结
以上所述是小编给大家介绍的Python循环实现n的全排列功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!