python递归全排列实现方法


Posted in Python onAugust 18, 2018

本文实例为大家分享了python递归全排列的实现方法,供大家参考,具体内容如下

排列:从n个元素中任取m个元素,并按照一定的顺序进行排列,称为排列;
全排列:当n==m时,称为全排列;

比如:集合{ 1,2,3}的全排列为:
{ 1 2 3}
{ 1 3 2 }
{ 2 1 3 }
{ 2 3 1 }
{ 3 2 1 }
{ 3 1 2 }

递归思想:

取出数组中第一个元素放到最后,即a[1]与a[n]交换,然后递归求a[n-1]的全排列

1)如果数组只有一个元素n=1,a={1} 则全排列就是{1}
2)如果数组有两个元素n=2,a={1,2} 则全排列是:
{2,1}--a[1]与a[2]交换。交换后求a[2-1]={2}的全排列,归结到1)
{1,2}--a[2]与a[2]交换。交换后求a[2-1]={1}的全排列,归结到1)
3)如果数组有三个元素n=3,a={1,2,3} 则全排列是
{{2,3},1}--a[1]与a[3]交换。后求a[3-1]={2,3}的全排列,归结到2)
{{1,3},2)--a[2]与a[3]交换。后求a[3-1]={1,3}的全排列,归结到2)
{{1,2},3)--a[3]与a[3]交换。后求a[3-1]={1,2}的全排列,归结到2)
...

依此类推。

利用python实现全排列的具体代码perm.py如下:

COUNT=0
def perm(n,begin,end):
  global COUNT
  if begin>=end:
    print n
    COUNT +=1
  else:
    i=begin
    for num in range(begin,end):
      n[num],n[i]=n[i],n[num]
      perm(n,begin+1,end)
      n[num],n[i]=n[i],n[num]
 
n=[1,2,3,4]
perm(n,0,len(n))
print COUNT

最后输出的结果如下:

======================== RESTART: D:/Python27/perm.py ========================
[1, 2, 3, 4]
[1, 2, 4, 3]
[1, 3, 2, 4]
[1, 3, 4, 2]
[1, 4, 3, 2]
[1, 4, 2, 3]
[2, 1, 3, 4]
[2, 1, 4, 3]
[2, 3, 1, 4]
[2, 3, 4, 1]
[2, 4, 3, 1]
[2, 4, 1, 3]
[3, 2, 1, 4]
[3, 2, 4, 1]
[3, 1, 2, 4]
[3, 1, 4, 2]
[3, 4, 1, 2]
[3, 4, 2, 1]
[4, 2, 3, 1]
[4, 2, 1, 3]
[4, 3, 2, 1]
[4, 3, 1, 2]
[4, 1, 3, 2]
[4, 1, 2, 3]
24
>>>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 图片验证码代码分享
Jul 04 Python
下载安装setuptool和pip linux安装pip    
Jan 24 Python
从零学python系列之教你如何根据图片生成字符画
May 23 Python
寻找网站后台地址的python脚本
Sep 01 Python
python使用KNN算法手写体识别
Feb 01 Python
Python设计模式之迭代器模式原理与用法实例分析
Jan 10 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
用python求一重积分和二重积分的例子
Dec 06 Python
在Python中利用pickle保存变量的实例
Dec 30 Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 Python
如何利用python发送邮件
Sep 26 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
May 28 Python
python使用PIL给图片添加文字生成海报示例
Aug 17 #Python
Python在for循环中更改list值的方法【推荐】
Aug 17 #Python
Python简单读写Xls格式文档的方法示例
Aug 17 #Python
Python实现的连接mssql数据库操作示例
Aug 17 #Python
Python SQL查询并生成json文件操作示例
Aug 17 #Python
python3 flask实现文件上传功能
Mar 20 #Python
Python爬取qq空间说说的实例代码
Aug 17 #Python
You might like
php 操作调试的方法
2012/07/12 PHP
php命令行用法入门实例教程
2014/10/27 PHP
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
javascript兼容性(实例讲解)
2017/08/15 Javascript
使用Vuex实现一个笔记应用的方法
2018/03/13 Javascript
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
vue-for循环嵌套操作示例
2019/01/28 Javascript
解决layui的input独占一行的问题
2019/09/10 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
Vue+element+cookie记住密码功能的简单实现方法
2020/09/20 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
Python 面向对象 成员的访问约束
2008/12/23 Python
python 正则表达式 概述及常用字符
2009/05/04 Python
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
解析Python编程中的包结构
2015/10/25 Python
django 创建过滤器的实例详解
2017/08/14 Python
python字典DICT类型合并详解
2017/08/17 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
2019/11/25 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
关于.NET, HTML的五个问题
2012/08/29 面试题
生物科学系大学生的自我评价
2013/12/20 职场文书
五年级科学教学反思
2014/02/05 职场文书
交通事故委托书范本精选
2014/10/04 职场文书
党支部反对四风思想汇报
2014/10/10 职场文书
领导工作表现评语
2015/01/04 职场文书
校本课程教学计划
2015/01/19 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
python 调用js的四种方式
2021/04/11 Python
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技