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