题解 | #火车进站# 深度搜索优先 递归

火车进站

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

# 后进先出
'''
1 2 3 | 3 2 1  一次停留3车
1 |2 3  2 3 1  第1次停留2车 第2次停留1车
|1 2 3  1 3 2  第1次停留1车 第2次停留2车
|1 |2 3 1 2 3  每次停留1车
1 2| 3  2 1 3  第1次停留2车 第2次停留1车
'''
# 来源:牛客网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

while True:
    try:
        n, nums = int(input()), list(map(int, input().split()))
        dfs(nums, [], [])
        for i in sorted(res):
            print(i)
    except:
        break


全部评论

相关推荐

来!
G了的牛可乐很爱吃烤...:百度面试官 给我说, 十月后开奖,现在都在泡池子
点赞 评论 收藏
分享
09-01 10:50
已编辑
东华大学 C++
PDD校招_内推:拼多多意向和开奖一般都比较晚,可能10月11月才出意向
点赞 评论 收藏
分享
08-01 11:19
电气工程师
我懒羊羊觉得没问题:写的太学生化了,像作文一样,很难看出你和岗位的匹配度
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务