1 |
|
输入描述:
字符串,如:abc
输出描述:
可能的出栈顺序,每行一种顺序
输入例子1:
abc
输出例子1:
abc acb bac bca cba
#include<bits/stdc++.h>
using namespace std;
string str1,str2;
stack<char> sta;
int s=0;
void dfs()
{
if(str2.size()==s)//满足则输出
cout<<str2<<endl;
if(sta.size())//要么出栈,要么不出,此处出栈表示输出
{
str2=str2+sta.top();
sta.pop();
dfs();
sta.push(str2.back());
str2.pop_back();
}
if(str1.size())//要么压栈,要么不压栈
{
sta.push(str1.front());
str1=str1.substr(1);
dfs();
str1=sta.top()+str1;
sta.pop();
}
}
int main()
{
cin>>str1;
s=str1.size();
dfs();
return 0;
}