火車進棧 dfs

2021-09-19 10:56:22 字數 867 閱讀 5647

題目描述

這裡有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...