【Python】递归实现n的全排列
这是面试字节跳动的大数据岗位时候面试官给的一个题目,就是输出n个数的全排列。
当n=1是,perm(1)= [[1]]
当n=2是,对于perm(1)里面的每个子list,n可以在list的第0个位置到最后一个位置,这里perm(1)里只有一个子list [1],所以perm(2)= [[2,1],[1,2]]
当n=3时,perm(2)的子list有[2,1]和[1,2],
对于子list为[2,1],3可以插入到[2,1]的第0个位置,到第二个位置,分别为[3,2,1],[2,3,1],[2,1,3],同样对于子list为[1,2]时,可以得到[3,1,2],[1,3,2],[1,2,3]
得到perm(3)=[[3,2,1],[2,3,1],[2,1,3],[3,1,2],[1,3,2],[1,2,3]]
因此对于perm(n)来说,先取perm(n-1)的每个子列表,然后依次在每个子列表中的每个位置插入n,即可得到perm(n)。
代码示例:
import copydef perm(n):data = []if(n == 1):data.append([1])else:for m in pai(n-1):for j in range(len(m)+1):k = copy.copy(m)#浅拷贝k.insert(j,n)data.append(k)return data
perm(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]]
【Python】递归实现n的全排列相关推荐
- python递归全排列_python递归全排列实现方法
本文实例为大家分享了python递归全排列的实现方法,供大家参考,具体内容如下 排列:从n个元素中任取m个元素,并按照一定的顺序进行排列,称为排列: 全排列:当n==m时,称为全排列: 比如:集合{ ...
- 判断某数组是不是二叉树的后序遍历序列 python递归与非递归解法
python 递归 class Solution:def VerifySquenceOfBST(self, sequence):# write code hereif len(sequence) &l ...
- Python递归获取文件夹下面所有文件名字:
Python递归获取文件夹下面所有文件名字: def getAllFiles(targetDir):files = []listFiles = os.listdir(targetDir)for i i ...
- python递归题目_Python递归的问题?
import time def outer(F): def wrapper(x): start = time.time() F(x) end = time.time() print(end - sta ...
- LeetCode 21. Merge Two Sorted Lists--合并2个有序列表--python递归,迭代解法
题目地址: Merge two sorted linked lists and return it as a new list. The new list should be made by spli ...
- python 递归遍历二叉树
python 递归遍历二叉树 我确定很多人不能真正的理解二叉树-- class Node: def __init__(self,value=0,left=0,right=0): self.value= ...
- python 递归方式实现斐波那契数列
python 递归方式实现斐波那契数列 import time t1=time.time() def factorial(n):if n==1 or n==2:return 1else:return ...
- python递归出口怎么写_Python进阶 —— 递归
作者是一名沉迷于Python无法自拔的蛇友,为提高水平,把Python的重点和有趣的实例发在简书上. 递归 是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现象.在计算机编程里,递归 ...
- Python递归实现汉诺塔
Python递归实现汉诺塔: def f3(n,x,y,z): if(n==1):print(x,'--->',z)else:f3(n-1,x,z,y)print(x,'--->',z)f ...
- 算法设计与分析——递归与分治策略——全排列
算法设计与分析--递归与分治策略--全排列 全排列问题的解决是通过分治与递归思想来解决的 首先判断是否递归到了最后一位,如果递归到了最后一位,则输出他当前的全排列序列. 如果没有到达最后一位,则循环的 ...
最新文章
- 机器学习的5个成功案例
- SQLite注意以下几点
- python批量删除注释_批量删除C和C++注释
- 在统计学中参数的含义是指_《统计学》名词解释及公式
- 征文通知 | 2018年全国知识图谱与语义计算大会
- 关于生命周期函数dealloc的使用小结
- 为什么程序员互相之间不能透露薪水?是怕“凡尔赛”吗?
- python画彩色螺旋线_Python turtle 绘制彩色螺旋线
- 手机群控系统OpenSTF
- 程序人生 - Nature封面:脑机接口突破,可将脑中“笔迹”转为屏幕字句,速度创纪录,准确率超高
- 比较神秘的网址!也许有用!收藏一下!
- java路上偶遇占小狼
- python数字转换_python数字转换
- 一个中国方案的落地:马云的eWTP,如何让马来西亚第一个all in
- QQ机器人官方插件加载配置方法【beta2版本】
- 初二物理模型有哪些_初中物理:模型分类及示例
- 论文笔记 Feature Selective Anchor-Free Module for Single-Shot Object Detection - CVPR 2019
- InnoDB存储引擎内部结构
- 大数据分析案例:应用系统负载分析与磁盘容量预测
- matlab 卷积求图像梯度,图像的卷积(滤波)运算(一)——图像梯度
热门文章
- 新生报到系统_新生报到迎新系统正式开放啦!
- 国内版firefox启用pocket
- 自由市场经济、社会主义和大数据
- 干货 | Elasticsearch 可搜索快照深入详解
- JAVASCRIPT之函数-输入秒J数转换成时分秒的一个小效果
- 非师范专业不能教高中吗 高中教师资格证怎么考
- ORA-12012: error on auto execute of job SYS.BSLN_MAINTAIN_STATS_JOB
- Java web学习——Spring MVC项目实例,三层架构通过JDBC链接SQLServer2012
- shared_ptr
- 双非(湖大)学子保研夏令营简历优质修改辅导