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 import引入不同路径下的模块
Jul 11 Python
详解python中的文件与目录操作
Jul 11 Python
python的Crypto模块实现AES加密实例代码
Jan 22 Python
django创建超级用户过程解析
Sep 18 Python
在python中利用dict转json按输入顺序输出内容方式
Feb 27 Python
Django模板之基本的 for 循环 和 List内容的显示方式
Mar 31 Python
解决Django中checkbox复选框的传值问题
Mar 31 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
如何使用python切换hosts文件
Apr 29 Python
tensorflow使用CNN分析mnist手写体数字数据集
Jun 17 Python
python定时截屏实现
Nov 02 Python
Python函数式编程中itertools模块详解
Sep 15 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
玩家交还《星际争霸》原始码光盘 暴雪报以厚礼
2017/05/05 星际争霸
php设计模式之简单工厂模式详解
2014/09/04 PHP
zen cart实现订单中增加paypal中预留电话的方法
2016/07/12 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
用ADODB.Stream转换
2007/01/22 Javascript
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
2016/01/05 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
vue vuex vue-rouert后台项目——权限路由(适合初学)
2017/12/29 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
小程序新版订阅消息模板消息
2019/12/31 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
python发送HTTP请求的方法小结
2015/07/08 Python
Python实现字典按照value进行排序的方法分析
2017/12/23 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
python-xpath获取html文档的部分内容
2020/03/06 Python
澳大利亚首个在线预订旅游网站:Wotif
2017/07/19 全球购物
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
苹果音乐订阅:Apple Music
2018/08/02 全球购物
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
婚礼新人答谢词
2015/01/04 职场文书
用Python selenium实现淘宝抢单机器人
2021/06/18 Python