问为啥我的测试结果只有一个,为啥我写的循环没有用
任务描述数字全排列问题:
任意给出从1到N的N个连续的自然数,求出这N个自然数的各种全排列。如N=3时,共有以下6种排列方式:
123,132,213,231,312,321。
注意:数字不能重复,N由键盘输入(N<=9)。
本关任务:利用递归,栈的思想编程实现数字全排问题的求解。。
相关知识
栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构
编程要求
根据提示,在右侧编辑器补充完善代码,输出数字全排列的全部组合及产生的全排列总数。
测试说明
平台会对你编写的代码进行测试:
测试输入:
[2,5,7]
预期输出:
[2, 5, 7]
[2, 7, 5]
[5, 2, 7]
[5, 7, 2]
[7, 2, 5]
[7, 5, 2]
6
data=[]#空列表类似空栈
count=0#全排列总数变量的初始化
def perm(lst,data):
#*******************begin****************
global count
if len(lst)==1:
count+=1
data+=lst
print(data)
del data[-2:]
else:
for i in lst:
data.append(i)
newlst=lst
newlst.remove(i)
perm(newlst,data)
#*******************end*******************
lst=eval(input())
perm(lst,data)
print(count)
我的测试结果
[2, 5, 7]
1