AcWing 129. 火车进栈
原题链接
简单
作者:
沙漠绿洲
,
2020-08-18 23:55:45
,
所有人可见
,
阅读 436
C++ 代码
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int n, cnt = 1;
stack<int> s;
vector<int> v;
void dfs(int idx){
if(cnt > 20) return;
if(v.size() == n){
++ cnt;
for(int i : v) cout << i;
cout << endl;
return;
}
if(s.size()){ //先出栈,这样字典序小
v.push_back(s.top());
s.pop();
dfs(idx);
s.push(v.back());
v.pop_back();
}
if(idx <= n){ //压栈
s.push(idx);
dfs(idx + 1);
s.pop();
}
}
int main()
{
cin >> n;
dfs(1);
return 0;
}