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中dictionary items()系列函数的用法实例
Aug 21 Python
python中requests模块的使用方法
Apr 08 Python
Python运算符重载用法实例
May 28 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
Sep 19 Python
Python实现的各种常见分布算法示例
Dec 13 Python
Python中Numpy mat的使用详解
May 24 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 Python
使用python对多个txt文件中的数据进行筛选的方法
Jul 10 Python
Python入门Anaconda和Pycharm的安装和配置详解
Jul 16 Python
python+appium+yaml移动端自动化测试框架实现详解
Nov 24 Python
python3判断IP地址的方法
Mar 04 Python
python利用pandas分析学生期末成绩实例代码
Jul 09 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的微信公众平台开发入门实例
2015/04/15 PHP
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
PHP程序员学习使用Swoole的理由
2018/06/24 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
JQuery AJAX提交中文乱码的解决方案
2010/07/02 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
2016/05/23 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
探讨Vue.js的组件和模板
2017/10/27 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
JavaScript时间日期操作实例小结【5个示例】
2018/12/22 Javascript
基于JS实现web端录音与播放功能
2019/04/17 Javascript
JavaScript实现单图片上传并预览功能
2019/09/30 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
Python中使用PyHook监听鼠标和键盘事件实例
2014/07/18 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
详解tensorflow实现迁移学习实例
2018/02/10 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
Html5之title吸顶功能
2018/06/04 HTML / CSS
村委会换届选举方案
2014/05/03 职场文书
三方股份合作协议书
2014/10/13 职场文书
助学金感谢信
2015/01/20 职场文书
通用员工手册范本
2015/05/14 职场文书
入党积极分子党小组意见
2015/06/02 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
部分武汉产收音机展览
2022/04/07 无线电
python和Appium的移动端多设备自动化测试框架
2022/04/26 Python