输入描述:
第一行输入一个正整数N(0 < N < 10),第二行包括N个正整数,范围为1到10。
输出描述:
输出以字典序从小到大排序的火车出站序列号,每个编号以空格隔开,每个输出序列换行,具体见sample。
输入:3
1 2 3
输出:
1 2 3
1 3 2
2 1 3
2 3 1
3 2 1
import sys
def train_out_order(n, trains):
results = []
def dfs(in_station, out_station, sequence):
# 如果没有入站和当前站台中没有车,输出方案
if not in_station and not sequence:
results.append(out_station)
return
# 如果还有入站的车,可以选择让下一辆车入站
if sequence:
dfs(in_station + sequence[0:1], out_station, sequence[1:])
# 如果站台中有车,可以选择出站
if in_station:
dfs(in_station[:-1], out_station + in_station[-1:], sequence)
dfs([], [], trains)
# 按字典序排序结果
results.sort()
return results
n = []
for line in sys.stdin:
a = line.split()
n.append(a)
ns = int(n[0][0])
trains = n[1]
out_train = train_out_order(ns, trains)
for line in out_train:
print(' '.join(line))