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之数据序列化(json、pickle、shelve)
Mar 30 Python
关于Python中空格字符串处理的技巧总结
Aug 10 Python
python3 发送任意文件邮件的实例
Jan 23 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 27 Python
python flask实现分页的示例代码
Aug 02 Python
详解Python3 基本数据类型
Apr 19 Python
pygame实现俄罗斯方块游戏(基础篇3)
Oct 29 Python
使用Matplotlib 绘制精美的数学图形例子
Dec 13 Python
TensorFlow获取加载模型中的全部张量名称代码
Feb 11 Python
python的sys.path模块路径添加方式
Mar 09 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
Jun 28 Python
LeetCode189轮转数组python示例
Aug 05 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/04/09 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
php无限级分类实现方法分析
2016/10/19 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
Javascript学习指南
2014/12/01 Javascript
jQuery的事件预绑定
2016/12/05 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
vue页面离开后执行函数的实例
2018/03/13 Javascript
apicloud拉起小程序并传递参数的方法示例
2018/11/21 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
Bootstrap FileInput实现图片上传功能
2021/01/28 Javascript
Python实现从URL地址提取文件名的方法
2015/05/15 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
matplotlib.pyplot绘图显示控制方法
2019/01/15 Python
Python3 mmap内存映射文件示例解析
2020/03/23 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
2020/09/26 Python
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
悬挂训练绳:TRX
2017/12/14 全球购物
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
温泉秘密:Onsen Secret
2020/07/06 全球购物
高一化学教学反思
2014/02/05 职场文书
贷款担保书范文
2014/05/13 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
离婚协议书范文2015
2015/01/26 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
高一作文之乐趣
2019/11/21 职场文书
python爬取新闻门户网站的示例
2021/04/25 Python
redis 查看所有的key方式
2021/05/07 Redis
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL