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的Django框架中的Context使用
Jul 15 Python
Python字符串转换成浮点数函数分享
Jul 24 Python
Python用threading实现多线程详解
Feb 03 Python
浅谈python的深浅拷贝以及fromkeys的用法
Mar 08 Python
python实现文件的分割与合并
Aug 29 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 Python
Python 图像对比度增强的几种方法(小结)
Sep 25 Python
python 调试冷知识(小结)
Nov 11 Python
Python中低维数组填充高维数组的实现
Dec 02 Python
Python计算公交发车时间的完整代码
Feb 12 Python
Python获取excel内容及相关操作代码实例
Aug 10 Python
python之json文件转xml文件案例讲解
Aug 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
改进的IP计数器
2006/10/09 PHP
PHP 判断变量类型实现代码
2009/10/23 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
php针对cookie操作的队列操作类实例
2014/12/10 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
关于JavaScript的一些看法
2009/05/27 Javascript
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
一个字符串反转函数可实现字符串倒序
2014/09/15 Javascript
js的window.showModalDialog及window.open用法实例分析
2015/01/29 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
关于JS中的apply,call,bind的深入解析
2016/04/05 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
Vue中如何实现轮播图的示例代码
2017/07/27 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
[01:08:56]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第一场 2月7日
2021/03/11 DOTA
Python统计日志中每个IP出现次数的方法
2015/07/06 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
python matplotlib 注释文本箭头简单代码示例
2018/01/08 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
django 控制页面跳转的例子
2019/08/06 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
简单介绍HTML5中audio标签的使用
2015/09/24 HTML / CSS
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
中学家长会邀请函
2014/02/03 职场文书
升国旗仪式主持词
2014/03/19 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书
python之PySide2安装使用及QT Designer UI设计案例教程
2021/07/26 Python