Python循环实现n的全排列功能
2019-09-16 13:45
1261 查看
描述:
输入一个大于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 copy def 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 res print(full_arrange(n))
总结
以上所述是小编给大家介绍的Python循环实现n的全排列功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
您可能感兴趣的文章:
相关文章推荐
- Python实现的单向循环链表功能示例
- 利用python实现简单的循环购物车功能示例代码
- Python使用itertools模块实现排列组合功能示例
- 轻松用python实现排列组合功能
- 用python列表实现队列的功能
- Python基于有道实现英汉字典功能
- Python基于有道实现英汉字典功能
- Python 实现类似PHP的strip_tags功能,并能够定义他们自己的一套保留标记
- python借用百度语音识别实现大音频文件语音识别功能
- python实现栅格计算器功能
- 使用Python函数和字典实现Java中的switch功能
- python实现基于SVM手写数字识别功能
- 简单实现python画圆功能
- 听歌识曲--用python实现一个音乐检索器的功能
- Python3.x实现网页登录表单提交功能
- 多个数组间元素排列组合问题求解(Java实现) 标签: 递归排列组合循环
- python实现简单聊天室功能 可以私聊
- 一行python代码实现神奇功能
- Python基于socket模块实现UDP通信功能示例
- Python:程序最小化到托盘功能实现