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 相关文章推荐
ptyhon实现sitemap生成示例
Mar 30 Python
Python基于递归实现电话号码映射功能示例
Apr 13 Python
numpy实现合并多维矩阵、list的扩展方法
May 08 Python
深入理解Django自定义信号(signals)
Oct 15 Python
Python检测数据类型的方法总结
May 20 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
python实现把二维列表变为一维列表的方法分析
Oct 08 Python
python selenium实现发送带附件的邮件代码实例
Dec 10 Python
Python接口测试文件上传实例解析
May 22 Python
Pyinstaller 打包发布经验总结
Jun 02 Python
Python Charles抓包配置实现流程图解
Sep 29 Python
解决Django transaction进行事务管理踩过的坑
Apr 24 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中定时计划任务的实现原理
2013/01/08 PHP
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
PHP 实现类似js中alert() 提示框
2015/03/18 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
PHP解决中文乱码
2017/04/28 PHP
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
js 实现菜单左右滚动显示示例介绍
2013/11/21 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
2020/09/11 Javascript
[02:57]DOTA2亚洲邀请赛 SECRET战队出场宣传片
2015/02/07 DOTA
浅析python协程相关概念
2018/01/20 Python
用python标准库difflib比较两份文件的异同详解
2018/11/16 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
Python csv文件记录流程代码解析
2020/07/16 Python
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
凯伦·米莲女装网上商店:Karen Millen
2017/11/07 全球购物
数组越界问题
2015/10/21 面试题
木工主管岗位职责
2013/12/08 职场文书
大学毕业生推荐信
2014/07/09 职场文书
会计师事务所实习证明
2014/11/16 职场文书