递归
def allsort(A):
lent=len(A)
if lent==1:
return A[lent-1]
else:
result=[]
for i in range(lent):
ch=A[0:i]+A[i+1:] #将第i个元素取出
for s in allsort(ch): #s按序取ch全排列后的各值和A[i]组合
result.append(A[i]+s)
return result
if __name__=="__main__":
A=(list)(input("请输入需要进行全排列的字符串:"))
print(allsort(A))
循环
(搞不懂为什么非要用循环来解决全排列问题,写起来有点费劲)
def permutation_rec(string):
# flag用来标记第i个字符是否已经被用过
flag=[False,False,False]
ch1=""
ch2=""
ch3=""
result=[]
for i in range(3):
ch1=string[i]
flag[i]=True
for j in range(3):
if flag[j]==False:
ch2=string[j]
flag[j]=True
for k in range(3):
if flag[k]==False:
ch3=string[k]
result.append(ch1+ch2+ch3)
flag[k]=False
flag[j]=False
flag[i]=False
return result
string="ABC"
print(permutation_rec(string))