标题:问为啥我的测试结果只有一个,为啥我写的循环没有用
取消只看楼主
D1419782499
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2021-1-4
结帖率:0
已结贴  问题点数:20 回复次数:3 
问为啥我的测试结果只有一个,为啥我写的循环没有用
任务描述
数字全排列问题:
  任意给出从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
搜索更多相关主题的帖子: 数字 count data 排列 测试 
2021-01-04 23:56
D1419782499
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2021-1-4
得分:0 
回复 2楼 apull
但是我有一组输出结果呀
2021-01-05 15:02
D1419782499
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2021-1-4
得分:0 
回复 2楼 apull
应该用newlst=lst.copy()
是的是的
谢谢大佬
2021-01-05 15:21
D1419782499
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2021-1-4
得分:0 
回复 2楼 apull
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.copy()
            newlst.remove(i)
            perm(newlst,data)
        del data[-1]


#*******************end*******************
lst=eval(input())
perm(lst,data)
print(count)


我的输出结果
[2, 5, 7]
[2, 7, 5]
[5, 2, 7]
[5, 7, 2]
[7, 2, 5]
[7, 5, 2]
Traceback (most recent call last):
  File "sy13/递归之数字全排列step4.py", line 22, in <module>
    perm(lst,data)
  File "sy13/递归之数字全排列step4.py", line 17, in perm
    del data[-1]
IndexError: list assignment index out of range


这是为啥呀??跪求
2021-01-05 15:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-504533-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.717310 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved