gpt4 book ai didi

python递归全排列实现方法

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python递归全排列实现方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例为大家分享了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如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

最后输出的结果如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
= = = = = = = = = = = = = = = = = = = = = = = = 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
>>>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:https://blog.csdn.net/zhoufen12345/article/details/53560099 。

最后此篇关于python递归全排列实现方法的文章就讲到这里了,如果你想了解更多关于python递归全排列实现方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com