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编程中使用Pillow来处理图像的基础教程
Nov 20 Python
python脚本实现xls(xlsx)转成csv
Apr 10 Python
Python计时相关操作详解【time,datetime】
May 26 Python
Python分治法定义与应用实例详解
Jul 28 Python
python检测主机的连通性并记录到文件的实例
Jun 21 Python
对django views中 request, response的常用操作详解
Jul 17 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
Aug 23 Python
IDLE下Python文件编辑和运行操作
Apr 25 Python
python实现自动清理文件夹旧文件
May 10 Python
教你用python控制安卓手机
May 13 Python
Python经常使用的一些内置函数
Apr 11 Python
Pytorch中expand()的使用(扩展某个维度)
Jul 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
简单的PHP图片上传程序
2008/03/27 PHP
PHP微信支付实例解析
2016/07/22 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
JavaScript 动态将数字金额转化为中文大写金额
2009/05/14 Javascript
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
JS中产生标识符方式的演变
2015/06/12 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
vue打包npm run build时候界面报错的解决
2020/08/13 Javascript
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
Python中的模块和包概念介绍
2015/04/13 Python
python显示生日是星期几的方法
2015/05/27 Python
Python获取文件所在目录和文件名的方法
2017/01/12 Python
Python3实现简单可学习的手写体识别(实例讲解)
2017/10/21 Python
Python numpy 常用函数总结
2017/12/07 Python
Python SQLite3简介
2018/02/22 Python
Python错误处理操作示例
2018/07/18 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
Python爬虫入门教程02之笔趣阁小说爬取
2021/01/24 Python
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
Pamela Love官网:纽约设计师Pamela Love的精美、时尚和穿孔珠宝
2020/10/19 全球购物
新郎新娘婚礼答谢词
2014/01/11 职场文书
中学自我评价
2014/01/31 职场文书
英语教育专业自荐信
2014/05/29 职场文书
企业形象策划方案
2014/05/29 职场文书
护林防火标语
2014/06/27 职场文书
工商局局长个人对照检查材料思想汇报
2014/09/23 职场文书
2014年内勤工作总结
2014/11/24 职场文书
实习生个人总结范文
2015/02/28 职场文书
关于分班的感言
2015/08/04 职场文书
关于运动会的广播稿
2015/08/19 职场文书