题解 | #火车进站#

火车进站

https://www.nowcoder.com/practice/97ba57c35e9f4749826dc3befaeae109

n = int(input())  # 读取输入,表示接下来要输入的列表的长度,但实际上这个长度信息并未在后续逻辑中使用  
name = list(map(int, input().split()))  # 读取一行输入,将其分割为多个部分,并将每个部分转换为整数,最后将这些整数存储在一个列表中  
  
# 定义一个递归函数,用于生成所有可能的排列  
def func(stack, output, remaining, res):  
    # 如果栈为空且没有剩余元素,说明已经找到了一种排列方式,将其添加到结果列表中  
    if not stack and not remaining:  
        res.append(output[:])  
      
    # 如果栈不为空,取出栈顶元素  
    if stack:  
        top = stack.pop()  
        # 递归调用函数,将栈顶元素添加到输出列表中,并尝试生成剩余元素的排列  
        func(stack, output + [top], remaining, res)  
        # 回溯,将栈顶元素重新放回栈中,以便尝试其他排列方式  
        stack.append(top)  
  
    # 如果还有剩余元素,将其添加到栈中,并尝试生成剩余元素的排列  
    if remaining:  
        func(stack + [remaining[0]], output, remaining[1:], res)  
  
# 初始化结果列表  
res = []  
# 调用函数,生成所有可能的排列  
func([], [], name, res)  
# 对结果列表进行排序  
res.sort()  
  
# 打印所有排列  
for i in res:  
    print(*i)

全部评论

相关推荐

牛客339922477号:都不用reverse,直接-1。一行。啥送分题
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务