算法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-----输出全排列(递归)的主要内容,如果未能解决你的问题,请参考以下文章