題目描述
這裡有n列火車將要進站再出站……
但是,每列火車只有1節—那就是車頭……
描述有n列火車按1到n的順序從東方左轉進站,這個車站是南北方向的,它雖然無限長,只可惜是乙個死胡同,而且站台只有一條股道,火車只能倒著從西方出去,而且每列火車必須進站,先進後出。
(某生:不就是個棧嗎?每次可以讓右側頭火車進棧,或者讓棧頂火車出站?
老師:閉嘴!)
就像這樣:
出站<——- <——進站
|車||站|
|__|
現在請你按《字典序》輸出前20種可能的出棧方案。
輸入
乙個整數 n<=20
輸出
按照《字典序》輸出前20種答案,每行一種,不要空格
樣例輸入
3樣例輸出
123132
213231
321思路
當火車要進棧時先考慮出棧,通過dfs模擬進出棧的過程
**實現
#include using namespace std;
typedef pairp;
const int n=50;
int sta[n],in;
int outsta[n],out;
int cnt,n;
void dfs(int num)
if(in>0)
if(num<=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...