题解 | 火车进站
火车进站
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))

查看6道真题和解析