这是面试字节跳动的大数据岗位时候面试官给的一个题目,就是输出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的全排列相关推荐

  1. python递归全排列_python递归全排列实现方法

    本文实例为大家分享了python递归全排列的实现方法,供大家参考,具体内容如下 排列:从n个元素中任取m个元素,并按照一定的顺序进行排列,称为排列: 全排列:当n==m时,称为全排列: 比如:集合{ ...

  2. 判断某数组是不是二叉树的后序遍历序列 python递归与非递归解法

    python 递归 class Solution:def VerifySquenceOfBST(self, sequence):# write code hereif len(sequence) &l ...

  3. Python递归获取文件夹下面所有文件名字:

    Python递归获取文件夹下面所有文件名字: def getAllFiles(targetDir):files = []listFiles = os.listdir(targetDir)for i i ...

  4. python递归题目_Python递归的问题?

    import time def outer(F): def wrapper(x): start = time.time() F(x) end = time.time() print(end - sta ...

  5. 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 ...

  6. python 递归遍历二叉树

    python 递归遍历二叉树 我确定很多人不能真正的理解二叉树-- class Node: def __init__(self,value=0,left=0,right=0): self.value= ...

  7. python 递归方式实现斐波那契数列

    python 递归方式实现斐波那契数列 import time t1=time.time() def factorial(n):if n==1 or n==2:return 1else:return ...

  8. python递归出口怎么写_Python进阶 —— 递归

    作者是一名沉迷于Python无法自拔的蛇友,为提高水平,把Python的重点和有趣的实例发在简书上. 递归 是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现象.在计算机编程里,递归 ...

  9. 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 ...

  10. 算法设计与分析——递归与分治策略——全排列

    算法设计与分析--递归与分治策略--全排列 全排列问题的解决是通过分治与递归思想来解决的 首先判断是否递归到了最后一位,如果递归到了最后一位,则输出他当前的全排列序列. 如果没有到达最后一位,则循环的 ...

最新文章

  1. 机器学习的5个成功案例
  2. SQLite注意以下几点
  3. python批量删除注释_批量删除C和C++注释
  4. 在统计学中参数的含义是指_《统计学》名词解释及公式
  5. 征文通知 | 2018年全国知识图谱与语义计算大会
  6. 关于生命周期函数dealloc的使用小结
  7. 为什么程序员互相之间不能透露薪水?是怕“凡尔赛”吗?
  8. python画彩色螺旋线_Python turtle 绘制彩色螺旋线
  9. 手机群控系统OpenSTF
  10. 程序人生 - Nature封面:脑机接口突破,可将脑中“笔迹”转为屏幕字句,速度创纪录,准确率超高
  11. 比较神秘的网址!也许有用!收藏一下!
  12. java路上偶遇占小狼
  13. python数字转换_python数字转换
  14. 一个中国方案的落地:马云的eWTP,如何让马来西亚第一个all in
  15. QQ机器人官方插件加载配置方法【beta2版本】
  16. 初二物理模型有哪些_初中物理:模型分类及示例
  17. 论文笔记 Feature Selective Anchor-Free Module for Single-Shot Object Detection - CVPR 2019
  18. InnoDB存储引擎内部结构
  19. 大数据分析案例:应用系统负载分析与磁盘容量预测
  20. matlab 卷积求图像梯度,图像的卷积(滤波)运算(一)——图像梯度

热门文章

  1. 新生报到系统_新生报到迎新系统正式开放啦!
  2. 国内版firefox启用pocket
  3. 自由市场经济、社会主义和大数据
  4. 干货 | Elasticsearch 可搜索快照深入详解
  5. JAVASCRIPT之函数-输入秒J数转换成时分秒的一个小效果
  6. 非师范专业不能教高中吗 高中教师资格证怎么考
  7. ORA-12012: error on auto execute of job SYS.BSLN_MAINTAIN_STATS_JOB
  8. Java web学习——Spring MVC项目实例,三层架构通过JDBC链接SQLServer2012
  9. shared_ptr
  10. 双非(湖大)学子保研夏令营简历优质修改辅导