题解 | #火车进站#

火车进站

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

# 后进先出

# 牛客网ID: 钻石王老五
#固定的递归方法,需要记住
res = [] #定义全局变量

def dfs(wait, stack, out):
    
    if not wait and not stack:  
    # if listname 列表有值执行语句;if not listname 列表为空执行语句
        res.append(' '.join(map(str, out)))
    if wait: # 入栈,一开始一股脑都入栈
        dfs(wait[1:], stack + [wait[0]], out)
    if stack: # 出栈,之后慢慢出栈
        dfs(wait, stack[:-1], out + [stack[-1]])
    #return res
'''
按照函数的运行逻辑:第1个出站顺序(3,2,1)结束之后,函数一步步返回至父节点(不走重复路径,若遇到下行路径重复的节点,继续返回至上一父节点),开启下一个分支。或者可以理解为并行计算出站顺序。
'''
while True:
    try:
        n, nums = int(input()), list(map(int, input().split()))
        dfs(nums, [], [])
        for i in sorted(res):
            print(i)
    except:
        break


全部评论

相关推荐

勤奋努力的椰子这就开摆:美团骑手在美团工作没毛病
投递美团等公司10个岗位
点赞 评论 收藏
分享
尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务