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实现百度关键词排名查询
Mar 30 Python
python实现多线程网页下载器
Apr 15 Python
Python实现的生产者、消费者问题完整实例
May 30 Python
Python基于property实现类的特性操作示例
Jun 15 Python
详解Django中间件执行顺序
Jul 16 Python
在Pycharm terminal中字体大小设置的方法
Jan 16 Python
python3.6 如何将list存入txt后再读出list的方法
Jul 02 Python
Python单元测试模块doctest的具体使用
Feb 10 Python
python3 自动打印出最新版本执行的mysql2redis实例
Apr 09 Python
基于pytorch中的Sequential用法说明
Jun 24 Python
Python中qutip用法示例详解
Oct 02 Python
教你如何用python操作摄像头以及对视频流的处理
Oct 12 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文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
2014/08/12 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
微信小程序之分享页面如何返回首页的示例
2018/03/28 Javascript
ES6之模版字符串的具体使用
2018/05/17 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
python多线程threading.Lock锁用法实例
2014/11/01 Python
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
python实现壁纸批量下载代码实例
2018/01/25 Python
解决python 输出是省略号的问题
2018/04/19 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
2020/06/17 Python
Python项目跨域问题解决方案
2020/06/22 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
HTML5的结构和语义(3):语义性的块级元素
2008/10/17 HTML / CSS
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
护士专业推荐信
2013/11/02 职场文书
自荐信封面
2013/12/04 职场文书
教师党员公开承诺书
2014/03/25 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
内乡县衙导游词
2015/02/05 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
民事诉讼代理词
2015/05/25 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers