题解 | #火车进站#

火车进站

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

递归实现。

def dfs(left: list, right: list, res_temp: list):
    # left代表站内的,right代表站外的,res_temp代表出战的
    if not right and not left:
        return res_list.append(res_temp)
    if not left:  # 没进过只能进
        dfs(left + [right[0]], right[1:], res_temp)
    elif not right:  # 进完了只能出
        dfs(left[:-1], right, res_temp + [left[-1]])
    else:
        dfs(left + [right[0]], right[1:], res_temp)  # 想进就进
        dfs(left[:-1], right, res_temp + [left[-1]])  # 想出就出
        
n, train, res_list = input(), input().split(' '), []
dfs([], train, [])
[print(' '.join(i)) for i in sorted(res_list)]

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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