时间:2021-05-22
描述:
输入一个大于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,2 2,1(1的前后插入)为3时,结果就是六种:1,2,3 1,3,2 3,2,1 (1,2的前中后插入)3,2,1 2,3,1 2,1,3 (2,1的前中后插入)代码:
import copydef full_arrange(n): data = [] # 中间结果 res = [] # 最终结果 if n == 1 : return 1 res = [[1]] for i in range(2, n+1): for j in range(len(res)): # 遍历res数组(二维数组) for x in range(len(res[j])+1): # 遍历res数组中的元素(一维数组) data = copy.copy(res[j]) # 浅拷贝 data.insert(x,i) # 在一维数组的不同位置插入元素,获得新的数组 res.append(data) x += 1 j += 1 # 删除多余数组(原始数组) 最后保留的数据(一维数组的长度) == i while True: if len(res[0]) != i: res.remove(res[0]) else: break i += 1 return resprint(full_arrange(n))总结
以上所述是小编给大家介绍的Python循环实现n的全排列功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了python递归全排列的实现方法,供大家参考,具体内容如下排列:从n个元素中任取m个元素,并按照一定的顺序进行排列,称为排列;全排列:当n=
本文实例讲述了常规方法实现python数组的全排列操作。分享给大家供大家参考。具体分析如下:全排列解释:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排
本文实例讲述了python通过yield实现数组全排列的方法。分享给大家供大家参考。具体分析如下:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来
算法原理如果用P表示n个元素的全排列,而Pi表示n个元素中不包含元素i的全排列,(i)Pi表示在排列Pi前面加上前缀i的排列,那么n个元素的全排列可递归定义为:
排列:从n个元素中任取m个元素,并按照一定的顺序进行排列,称为排列;全排列:当n==m时,称为全排列;比如:集合{1,2,3}的全排列为:复制代码代码如下:{1