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开启多个子进程并行运行的方法
Apr 18 Python
python获取本机mac地址和ip地址的方法
Apr 29 Python
Python编程中字符串和列表的基本知识讲解
Oct 14 Python
python模块简介之有序字典(OrderedDict)
Dec 01 Python
python实现解数独程序代码
Apr 12 Python
python机器学习实战之K均值聚类
Dec 20 Python
python和flask中返回JSON数据的方法
Mar 26 Python
numpy.where() 用法详解
May 27 Python
python 判断三个数字中的最大值实例代码
Jul 24 Python
Python qrcode 生成一个二维码的实例详解
Feb 12 Python
Django 删除upload_to文件的步骤
Mar 30 Python
Python中使用ipython的详细教程
Jun 22 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
基于mysql的bbs设计(三)
2006/10/09 PHP
php顺序查找和二分查找示例
2014/03/27 PHP
php获取图片信息的方法详解
2015/12/10 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
用Javascript 获取页面元素的位置的代码
2009/09/25 Javascript
Google AJAX 搜索 API实现代码
2010/11/17 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
2013/01/17 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
2013/07/10 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
2014/06/30 Javascript
学习JavaScript设计模式之状态模式
2016/01/08 Javascript
jQuery中JSONP的两种实现方式详解
2016/09/26 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
vue实现商品加减计算总价的实例代码
2018/08/12 Javascript
详解vue 兼容IE报错解决方案
2018/12/29 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
2019/12/09 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
2021/01/26 Vue.js
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
详解pandas映射与数据转换
2021/01/22 Python
巴西女装购物网站:Eclectic
2018/04/24 全球购物
美国轮胎网站:Priority Tire
2018/11/28 全球购物
yy司仪主持词
2014/03/22 职场文书
《祁黄羊》教学反思
2014/04/22 职场文书
党员个人整改方案及措施
2014/10/25 职场文书
单位车辆管理制度
2015/08/05 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
尝试使用Python爬取城市租房信息
2022/04/12 Python
python blinker 信号库
2022/05/04 Python