"""全排列 用递归方法全排列:
1、列表只有一个元素[a],它的全排列只有a。
2、列表有两个元素[a, b],它的全排列为[a, b], [b, a]:{ 将第一个元素a固定,对b进行全排列得到[a, b]。将第一个元素与第二个元素交换得到[b, a]。将b固定,对a进行全排列,得到[b, a] }
3、列表有三个元素[a, b, c]{ 将a固定,对bc进行全排列{ 将b固定,对c全排列[abc]。交换bc,将c固定对b进行全排列[acb] }交换ab,[b, a, c] 对ac进行全排列{ ... }... ...}
4、列表有n个元素,将第一个元素固定,对剩下n - 1个元素进行全排列。将第一个元素依此与其他元素交换,对每次交换后剩下的n-1个元素进行全排列。
5、对剩下的n - 1个元素全排列,同上,固定后对n - 2排列。
6、直到数组数量为1,全排列就是它自己,完成一次排列。j = begin
for i in range(begin, end):  # 对begin到end的数组进行i次交换。data[i], data[j] = data[j], data[i]  # 交换。perm(data, begin + 1, end)  # 交换后对剩下数组进行全排列。[begin + 1, end]data[i], data[j] = data[j], data[i]  # 全排列完成后,换回原来的顺序,回到for进行下一次交换。"""def perm(data, begin, end):if begin == end:  # 递归结束条件,当交换到最后一个元素的时候不需要交换,1的全排列还是1。print(data)  # 打印一次排列完成后的数组。else:j = beginfor i in range(begin, end):  # 从begin到end全排列。data[i], data[j] = data[j], data[i]perm(data, begin + 1, end)data[i], data[j] = data[j], data[i]  # 递归完成后,交换回原来的位置。arr = [1, 2, 3, 4, 5]
perm(arr, 0, len(arr))

递归全排列 python实现相关推荐

  1. python递归 数字全排列_利用递归实现全排列(python)

    利用递归实现全排列(python) """ 利用递归实现全排列 第一个位置可能有n种可能,第二个位置可能 有n-1种可能...... 代码思路就是第一个位置可以和n个元素 ...

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

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

  3. 最大质因子递归解法python

    最大质因子的递归解法&Python: 问题描述: 求一个任意正整数的最大质因子,呈上代码及注释: # 最大质因子 def calc(x:int)->int:# 函数参数类型设置以及返回值 ...

  4. python递归函数例题_递归案例python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 而对应的中文翻译 "递归" 却表达了两个意思:"递 ...

  5. 字典序全排列算法(非递归全排列算法)

    非递归全排列算法: 我们先看一个例子. 示例: 1 2 3的全排列如下: 1 2 3 , 1 3 2 , 2 1 3 , 2 3 1 , 3 1 2 , 3 2 1 我们这里是通过字典序法找出来的. ...

  6. python递归实现全排列,python 之递归与非递归实现全排列

    全排列:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列. 当m=n时所有的排列情况叫全排列.公式:全排列数f(n)=n!(定义 n 为正整数 ...

  7. 全排列-python递归解法

    n = 3 # all 为栈模型 all = []def dfs(flag_list, layer, all):if layer == n:print(all)for i in range(n):if ...

  8. 求字符串全排列 python实现

    文章目录 算法思想 附上c语言实现 参考 算法思想 输入一个字符串,打印这个字符串中字符的全排列. eg: 输入:abc 输出:abc acb bac bca cab cba 思路:将求字符串的全排列 ...

  9. LeetCode 144. Binary Tree Preorder Traversal--二叉树前序遍历--反向压栈--迭代-栈,递归--C++,Python解法

    题目地址:Binary Tree Preorder Traversal - LeetCode Given a binary tree, return the preorder traversal of ...

最新文章

  1. add python3.7 to path是什么意思_一起读源码:为什么 loguru 的时间 rotation 不能只精确到天...
  2. 括号(打印n对括号)
  3. 不错的jquery插件
  4. 【Linux】17.Ubuntu16.04 系统添加网关和DNS的两种方式
  5. microsoft excel 正在等待其他某个应用程序_浅谈应该购买英特尔Mac还是等待购买基于Arm的Mac...
  6. inventor如何钣金出弧面_SolidWorks如何在钣金弧面上雕刻公司名字?原来如此简单...
  7. 指针类型和指针类型转换的理解
  8. EFCore之命令行工具
  9. Java面向对象编程(中级)
  10. Web Worker
  11. Tensorlfow——变量
  12. Unity2017.3来了!洪流学堂第一时间送上更新日志简报
  13. TypeError: unhashable type: ‘numpy.ndarray‘
  14. 英语听力学习方法,转自一牛人的博客
  15. 用iPad开发iPhone App,苹果发布Swift Playgrounds 4
  16. 2022年「博客之星」参赛博主:落寞的魚丶
  17. design pattern Builder 生成器设计模式
  18. html/css笔记 文本添加下划线方法
  19. 这就是你要找的Spring-ioc简单入门!
  20. C函数中返回字符数组

热门文章

  1. 【网络安全】上网行为管理
  2. python实现统计文本当中单词数量
  3. 【Bug解决】Could not find resource com/kuang/mapper/Mapper.xml
  4. 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(1月2日)...
  5. Netty源码实战(十) - 性能优化
  6. 2021年广东省雷州市客路镇高考成绩查询,雷州市客路镇隆重召开庆祝第31个教师节暨表彰大会...
  7. MATLAB----模糊神经网络
  8. 中关村高新技术企业名单
  9. 计算机配置好坏怎么看,电脑配置怎么看 史上最全的查看电脑配置好坏方法
  10. 内网渗透-横向渗透2