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用GET方法上传文件
Mar 10 Python
Python的Django框架中模板碎片缓存简介
Jul 24 Python
Python批量修改文本文件内容的方法
Apr 29 Python
Python实现遍历目录的方法【测试可用】
Mar 22 Python
wxPython的安装图文教程(Windows)
Dec 28 Python
对python list 遍历删除的正确方法详解
Jun 29 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
Oct 14 Python
Python实现的线性回归算法示例【附csv文件下载】
Dec 29 Python
Python使用matplotlib绘制Logistic曲线操作示例
Nov 28 Python
关于matplotlib-legend 位置属性 loc 使用说明
May 16 Python
详解如何在PyCharm控制台中输出彩色文字和背景
Aug 17 Python
Python time库的时间时钟处理
May 02 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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
PHP获取网站域名和地址的代码
2008/08/17 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
yii数据库的查询方法
2015/12/28 PHP
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
javascript检查表单数据是否改变的方法
2013/07/30 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
nodejs实现bigpipe异步加载页面方案
2016/01/26 NodeJs
基于javascript实现动态时钟效果
2020/08/18 Javascript
Nodejs抓取html页面内容(推荐)
2016/08/11 NodeJs
JavaScript表单验证完美代码
2017/03/02 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
vue 将页面公用的头部组件化的方法
2017/12/18 Javascript
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
详解原生JS动态添加和删除类
2019/03/26 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
[04:09]显微镜下的DOTA2第十二期—NaVi美如画的团战
2014/06/23 DOTA
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
使用Python制作微信跳一跳辅助
2018/01/31 Python
python实现飞机大战微信小游戏
2020/03/21 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
美国眼镜网:GlassesUSA
2017/09/07 全球购物
DOUGLAS波兰:在线销售香水和化妆品
2020/07/05 全球购物
科长竞争上岗演讲稿
2014/05/12 职场文书
大学生党员承诺书
2014/05/20 职场文书
幼儿园运动会口号
2014/06/07 职场文书
2015年商场工作总结
2015/04/27 职场文书
师范生教育见习总结
2015/06/23 职场文书
小学生读书笔记范文
2015/06/30 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书