对a,b,c进行全排列输出如

['a', 'b', 'c']

['a', 'c', 'b']

['b', 'a', 'c']

['b', 'c', 'a']

['c', 'b', 'a']

['c', 'a', 'b']

用递归思想来实现,大体思路:每个元素都会可能会充当新排列的队头,所以产生了一个for循环,复杂度是n用于交换头部元素和第i个元素,交换完毕产生新的队列,如

[‘b’, ‘a’, ‘c’]

接下来对第二个元素到队位进行全排列(python中传递ls和俩坐标, 切勿传递切片),直到传入的坐标重叠便是递归的出口,也可以在这里先打印。因为我们一直对ls进行排序,所以这里我们对元素位置还原初始状态是为了进行下一次的排序。

整体思路很简单,就是递归有序的交换元素。至于为什么会产生原顺序的[‘a’, ‘b’, ‘c’],因为我们每次都对第一个元素和第一个元素进行了交换。

def swap(ls, i, j):

ls[i], ls[j] = ls[j], ls[i]

def perm(ls, p, q):

if p == q:

print(ls)

return

for i in range(p, q+1, 1):

swap(ls, p, i)

perm(ls, p+1, q)

swap(ls, i, p) # 还原

if __name__ == "__main__":

# ls = ["a", "b", "c", "d"]

ls = ["a", "b", "c"]

num = len(ls)

for i in range(num):

swap(ls, 0, i)

perm(ls, 1, num-1) # 还原

swap(ls, i, 0)

一定要记得还原原来的数组。视频讲解链接

python全排列abc_abc的全排列相关推荐

  1. NC15128 老子的全排列呢 dfs 全排列 (何以解忧,唯有暴搜)

    链接:https://ac.nowcoder.com/acm/problem/15128 来源:牛客网 题目描述 老李见和尚赢了自己的酒,但是自己还舍不得,所以就耍起了赖皮,对和尚说,光武不行,再来点 ...

  2. python打印字符串全排列_Python实现全排列的打印

    本文为大家分享了Python实现全排列的打印的代码,供大家参考,具体如下 问题:输入一个数字:3,打印它的全排列组合:123 132 213 231 312 321,并进行统计个数. 下面是Pytho ...

  3. python 利用递归实现全排列

    使用递归实现全排列.123实现全排列! 法1: 上面定义了两个列表,一个列表存的是需要全排列的数据,另一个列表是当做栈来用的,可以把这个递归想成一棵树,在最顶端是包含所有值得列表,之后从这个列表中循环 ...

  4. Python 非递归方法的全排列

    python algorithm 全排列(Permutation) 排列 (Permutation)是将相异物件或符号根据确定的顺序重排.每个顺序都称作一个排列. 例如,从一到六的数字有720种排列, ...

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

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

  6. Python对数列进行全排列

    输入: 1 数列的个数 2 数列 输出:对数列进行全排列 import itertoolsnum = int(input()) arr = input("") li = [int( ...

  7. Suzy加油吧 Day 29 | 回溯算法进行中:491. 递增子序列,46 全排列,47 全排列2

    491. 递增子序列(新 & 难) 呜呜呜呜呜 题目 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 .你可以按 任意顺序 返回答案. 数组 ...

  8. 【组合数学】排列组合 ( 多重集排列 | 多重集全排列 | 多重集非全排列 所有元素重复度大于排列数 | 多重集非全排列 某些元素重复度小于排列数 )

    文章目录 一.多重集 二.多重集全排列 三.多重集全排列示例 三.多重集非全排列 1 所有元素重复度大于排列数 ( ni≥rn_i \geq rni​≥r ) 四.多重集非全排列 2 某些元素重复度小 ...

  9. 全排列【46. 全排列】

    一,题目描述 力扣 46. 全排列 难度中等1767 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 .你可以 按任意顺序 返回答案. 示例 1: 输入:nums = [1,2,3] ...

  10. 回溯算法--LeetCode-46 全排列、LeetCode-47 全排列Ⅱ

    LeetCode-46 全排列 题目链接:https://leetcode-cn.com/problems/permutations/ 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输 ...

最新文章

  1. python的sort_python sort、sorted
  2. Java多线程学习(二)---线程创建方式
  3. TripleDES加密解密
  4. Angular项目构建指南 - 不再为angular构建而犹豫不决(转)
  5. 华为平板wps语音朗读_华为平板M6 10.8英寸综合评测 目前体验最好的安卓平板
  6. 评审会上产品经理常被怼的话
  7. 内存总是不够?HBaseGeoMesa配置优化了解一下
  8. linux怎么判断全局符号,Linux下全局符号覆盖有关问题
  9. Ubuntu之更新CMake的版本
  10. ASP.NET MVC3 中整合 NHibernate3.3、Spring.NET2.0 使用AOP执行事务处理
  11. 11个值得掌握的Java代码性能优化技巧
  12. java计算机毕业设计网上书店进销存管理系统源程序+mysql+系统+lw文档+远程调试
  13. 航空——模拟飞行之飞行术语
  14. “开源和商业化不能形成对立!”
  15. 学习笔记:Github(1)站在巨人的肩膀上
  16. Word如何设置单元格垂直居中
  17. 移动端长按事件 vue
  18. 多线程编程核心技术总结(读周志明书籍的总结)
  19. 模型评价方法及代码实现
  20. php mssql统计表中的主键个数,MSSQL_SQL Server中统计每个表行数的快速方法,我们都知道用聚合函数count()可 - phpStudy...

热门文章

  1. 【驱动】DM9000网卡驱动分析
  2. 台式计算机驱动程序未被安装,Win10提示该设备的驱动程序未被安装。(代码28)
  3. 基于STM32的空气质量监测系统简单案例
  4. java题库管理考试管理源码,基于jsp的题库管理系统-JavaEE实现题库管理系统 - java项目源码...
  5. PSP2000V3版5.03系统误删PSP文件夹的拯救方案
  6. 如何通过视频转换器将qsv格式转换成mp4格式
  7. php敏感代码屏蔽,PHP敏感词汇屏蔽或替换
  8. [jQuery案例练习]——锅打灰太狼
  9. linux系统的日历如何改,linux下实现农历的日历
  10. 佳能Canon PIXMA MP630 一体机驱动