火車進棧(DFS

2021-10-14 11:25:15 字數 846 閱讀 9175

這裡有n列火車將要進站再出站,但是,每列火車只有1節,那就是車頭。

這n列火車按1到n的順序從東方左轉進站,這個車站是南北方向的,它雖然無限長,只可惜是乙個死胡同,而且站台只有一條股道,火車只能倒著從西方出去,而且每列火車必須進站,先進後出。

也就是說這個火車站其實就相當於乙個棧,每次可以讓右側頭火車進棧,或者讓棧頂火車出站。

車站示意如圖:

出站<——    <——進站

|車||站|

|__|

現在請你按《字典序》輸出前20種可能的出棧方案。

輸入格式

輸入乙個整數n,代表火車數量。

輸出格式

按照《字典序》輸出前20種答案,每行一種,不要空格。

資料範圍

1≤n≤20

輸入樣例:

3輸出樣例:

123132

213231

321

#include

using

namespace std;

vector<

int>state1;

vector<

int>state2;

int state3=1;

int cnt=20;

int n;

void

dfs(

) cnt--

; cout

if(state2.

size()

)if(state3<=n)

}int

main()

火車進棧 dfs

題目描述 這裡有n列火車將要進站再出站 但是,每列火車只有1節 那就是車頭 描述有n列火車按1到n的順序從東方左轉進站,這個車站是南北方向的,它雖然無限長,只可惜是乙個死胡同,而且站台只有一條股道,火車只能倒著從西方出去,而且每列火車必須進站,先進後出。某生 不就是個棧嗎?每次可以讓右側頭火車進棧,...

AcWing 129 火車進棧

這裡有n列火車將要進站再出站,但是,每列火車只有1節,那就是車頭。這n列火車按1到n的順序從東方左轉進站,這個車站是南北方向的,它雖然無限長,只可惜是乙個死胡同,而且站台只有一條股道,火車只能倒著從西方出去,而且每列火車必須進站,先進後出。也就是說這個火車站其實就相當於乙個棧,每次可以讓右側頭火車進...

演算法競賽高階指南 0x11 (棧)火車進棧

兩個操作圖中1操作是火車進棧,2是火車出棧,因為要按照字典序輸出,應該先執行操作2,執行操作1來保證字典序正確 直接用dfs來暴力模擬過程,即可輸出答案 include using namespace std int n,cnt 20 vector int state1 stack int stat...