原题链接:AcWing 129. 火车进栈
参考题解:AcWing 129. 火车进栈-yxc版本
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int n;
vector<int> state1;
stack<int> state2;
int state3=1;
int cnt=20;
void dfs()
{
if(cnt==0)
return;
if(state1.size()==n)
{
cnt--;
for(int i=0;i<n;i++)
{
cout<<state1[i];
}
cout<<endl;
return ;
}
if(state2.size()>0)
{
state1.push_back(state2.top());
state2.pop();
dfs();
state2.push(state1.back());
state1.pop_back();
}
if(state3<=n)
{
state2.push(state3++);
dfs();
state2.pop();
state3--;
}
}
int main()
{
std::ios::sync_with_stdio(false);
cin>>n;
dfs();
return 0;
}