题解 | 火车进站

火车进站

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

import sys

n = int(input())
altrain = list(map(int, input().split()))
res = []
def rec_train(curr, intrain, outtrain):
    # 如果最后一个火车已经进站了
    if altrain[-1] in intrain:
        # 让进站列表倒序加到出站列表中
        res.append(" ".join(map(str, outtrain + intrain[::-1])))
        return
    # 如果进站列表为空,此时只能进站:进站列表加上当前火车,出站列表不变
    elif not intrain:
        if curr < n:
            rec_train(curr + 1, intrain + [altrain[curr]], outtrain)
    # 否则,既有可能进站,也有可能出站
    else:
        # 如果是出站:让进站火车列表减去最后一个元素,出站列表加上刚刚减去的元素
        rec_train(curr, intrain[:-1], outtrain + [intrain[-1]])
        # 如果是进站: 进站列表加上当前火车,出站列表不变
        if curr < n:
            rec_train(curr + 1, intrain + [altrain[curr]], outtrain)

rec_train(0, [], [])
res.sort()
#res是一个由字符串组成的列表
print("\n".join(res))

全部评论

相关推荐

02-26 01:13
集美大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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