例如,输入数列为{1,2,3,4,5}
,输出出栈的所有可能:
代码:
#include <bits/stdc++.h>
using namespace std;
vector<int > tmp;
vector<int> in={1,2,3,4,5};
stack<int> s;
int cnt=0;
void dfs()
{
if(tmp.size()==in.size())
{
for(int i=0;i<tmp.size();i++)
{
cout<<tmp[i]<<" ";
}
cout<<endl;
return ;
}
if(s.size()>0)
{
tmp.push_back(s.top());//出栈
s.pop();
dfs();
s.push(tmp.back());//不出栈
tmp.pop_back();
}
if(cnt<in.size())
{
s.push(in[cnt]);
cnt++;
dfs();
s.pop();
cnt--;
}
}
int main()
{
std::ios::sync_with_stdio(false);
dfs();
return 0;
}
部分结果(没截全):