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实现根据图标提取分类应用程序实例
Sep 28 Python
Python中pygame的mouse鼠标事件用法实例
Nov 11 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
Apr 30 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
django之对FileField字段的upload_to的设定方法
Jul 28 Python
Pytorch之view及view_as使用详解
Dec 31 Python
tensorflow实现二维平面模拟三维数据教程
Feb 11 Python
Pyinstaller 打包发布经验总结
Jun 02 Python
基于CentOS搭建Python Django环境过程解析
Aug 24 Python
python如何在word中存储本地图片
Apr 07 Python
Python中Schedule模块使用详解 周期任务神器
Apr 19 Python
Python绘制散点图之可视化神器pyecharts
Jul 07 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
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
php imagecreatetruecolor 创建高清和透明图片代码小结
2010/05/15 PHP
解析func_num_args与func_get_args函数的使用
2013/06/24 PHP
php自定义hash函数实例
2015/05/05 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
php中define用法实例
2015/07/30 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
js异步加载的三种解决方案
2013/03/04 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
JS实现表单多文件上传样式美化支持选中文件后删除相关项
2016/09/30 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
2017/05/19 jQuery
微信小程序实现底部导航
2018/11/05 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
JavaScript实现联动菜单特效
2020/01/07 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
Python运行报错UnicodeDecodeError的解决方法
2016/06/07 Python
值得收藏的10道python 面试题
2019/04/15 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
详解html5 shiv.js和respond.min.js
2018/01/24 HTML / CSS
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
怎么写有吸引力的自荐信
2013/11/17 职场文书
体育课课后反思
2014/04/24 职场文书
工作失职检讨书
2015/01/26 职场文书
给校长的建议书作文400字
2015/09/14 职场文书