算法9-----输出全排列(递归)

Posted 咫片炫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法9-----输出全排列(递归)相关的知识,希望对你有一定的参考价值。

1、题目:给定一个字符串,输出所有的字典序。

如:

输入字符串:‘ac‘,输出:[‘ac‘,‘ca‘]

输入字符串:‘abc‘ ,输出:[‘abc‘,‘acb‘,‘bac‘,‘bca‘,‘cab‘,‘cba‘]

输入字符串:‘acc‘,输出:[‘acc‘,‘cac‘,‘cca‘]

2、递归:

如:‘abc‘,对于‘a‘,返回’bc‘的全排列字典序,对于‘b‘,返回‘ac‘的全排列,对于‘c‘,返回‘ab‘的全排列。【循环加递归】

代码1:

def printstr(s):
    liststr=[]
    result=[]
    if len(s)==1:
        liststr.append(s)
        return liststr
    else:
        for i in range(len(s)):
            liststr1=printstr(s[:i]+s[i+1:])
            for item in liststr1:
                result.append(s[i]+str(item))
        return list(set(result))
s=input()
print(printstr(s))

代码2:

res = list()
def traverse(ss,join_ss=‘‘):
    if ss:
        for i,s in enumerate(ss):
            sub_ss = ss[:i]+ss[i+1:]
            traverse(sub_ss,join_ss+s)
    elif join_ss and join_ss not in res:
        res.append(join_ss)
    return res

result = traverse(abc,‘‘)
print(result)

 

以上是关于算法9-----输出全排列(递归)的主要内容,如果未能解决你的问题,请参考以下文章

算法之使用递归求解全排列

编写一个递归算法,输出自然数1,2,…,n这n个元素的全排列

全排列递归算法

全排序递归算法

全排列算法--递归实现(Java)

递归基础_全排列(一般递推实现)