AcWing 129. 火车进栈
原题链接
简单
作者:
哈基咪
,
2020-09-12 17:05:36
,
所有人可见
,
阅读 521
//火车进栈
#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
#include<vector>
using namespace std;
int cnt=20;
vector<int> state1;//答案
stack<int> state2;//栈
int state3=1;//表示从state3往后的数字还没有进栈
int n;
void dfs()
{
if(!cnt) return ;
if(state1.size()==n)
{
cnt--;
for(int i=0;i<state1.size();i++)
{
cout<<state1[i];
}
cout<<endl;
}
//枚举出栈
if(!state2.empty())
{
state1.push_back(state2.top());
state2.pop();
dfs();
state2.push(state1.back());
state1.pop_back();
}
if(state3<=n)
{
state2.push(state3);
state3++;
dfs();
state3--;
state2.pop();
}
}
int main()
{
cin>>n;
dfs();
}