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中字典dict常用操作方法实例总结
Apr 04 Python
python中列表元素连接方法join用法实例
Apr 07 Python
Python中强大的命令行库click入门教程
Dec 26 Python
python smtplib发送带附件邮件小程序
May 22 Python
python+pandas+时间、日期以及时间序列处理方法
Jul 10 Python
Python3.6使用tesseract-ocr的正确方法
Oct 17 Python
python调用支付宝支付接口流程
Aug 15 Python
pytorch自定义初始化权重的方法
Aug 17 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
Oct 24 Python
5行Python代码实现图像分割的步骤详解
May 25 Python
Python实现手绘图效果实例分享
Jul 22 Python
Python第三方库安装缓慢的解决方法
Feb 06 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
地摊中国 - 珍藏老照片
2020/08/18 杂记
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
PHP中常用的转义函数
2014/02/28 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
javascript一些不错的函数脚本代码
2008/09/10 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
js实现模糊匹配功能
2017/02/15 Javascript
layui分页效果实现代码
2017/05/19 Javascript
layui-laydate时间日历控件使用方法详解
2018/11/15 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
[51:53]完美世界DOTA2联赛决赛日 Inki vs LBZS 第二场 11.08
2020/11/10 DOTA
github配置使用指南
2014/11/18 Python
python中使用xlrd、xlwt操作excel表格详解
2015/01/29 Python
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
python批量读取文件名并写入txt文件中
2020/09/05 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
python内打印变量之%和f的实例
2020/02/19 Python
django xadmin action兼容自定义model权限教程
2020/03/30 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
HTML5标签大全
2016/11/23 HTML / CSS
旅游与酒店管理的自我评价分享
2013/11/03 职场文书
业务员简历自我评价
2014/03/06 职场文书
白血病募捐倡议书
2014/05/14 职场文书
查摆问题整改措施
2014/10/24 职场文书
酒店辞职书范文
2015/02/26 职场文书
幸福终点站观后感
2015/06/04 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server