第一种方式:
利用python的itertools模块的permutations()方法
from itertools import permutations
try:
while 1:
s=sorted(raw_input())
l=permutations(s)
for x in l:
print ''.join(x)
except:
pass
利用递归方式:
方法:生成一个标志为数组,记录该元素是否已经被使用
注意的地方:标志数组使用完之后,要注意恢复,也就是代码中
# -*- coding:utf-8 -*-
import sys
import copy
def getAllP(tp, vis, lens,cur,res,tmp):
if cur == lens:
res.append(copy.deepcopy(tmp))
return
for i in range(lens):
if vis[i] ==0:
vis[i]=1
tmp.append(tp[i])
cur +=1
getAllP(tp,vis,lens,cur,res,tmp)
cur -=1
vis[i] =0
tmp.pop()
return res
if __name__ == '__main__':
while True:
tp = sys.stdin.readline().strip()
if not tp:
break
tp = list(tp)
tp.sort()
lens = len(tp)
vis = [0]*lens
res= []
res = getAllP(tp,vis,lens,0,res,[])
for i in res:
print ''.join(i)