题解 | #火车进站#DFS+STACK

火车进站

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

首先构造出入栈的顺序序列, 需要满足两个条件

  1. 第一个必须是i(入栈)
  2. i的个数必须大于等于o(出栈)的个数 在每一次得到合法顺序之后使用栈模拟 得到结果
N = int(input())
a = list(map(int, input().split()))
res = []
def dfs(order, inum, onum):
    if len(order)==N*2:
        stack = []
        tmp = []
        tmpa = a.copy()
        for o in order:
            if o == 'i':
                stack.append(tmpa.pop(0))
            else:
                tmp.append(str(stack.pop()))
        res.append(" ".join(tmp))
        return 
    if inum<N: dfs(order+['i'], inum+1, onum)
    if onum<N and onum<inum: dfs(order+['o'], inum, onum+1)
dfs(['i'], 1, 0)
res.sort()
for r in res:
    print(r)
全部评论

相关推荐

那一天的Java_Java起来:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
评论
2
3
分享

创作者周榜

更多
牛客网
牛客企业服务