题目: 如何求入栈顺序为1234……N的序列的所有可能的出栈序列? 代码:递归求解 #include <iostream> #include <vector> using namespace std; void print(vector<int>& v) { cout<<endl; for(int i=0;i<(int)v.size();i++) { cout<<v[i]<<"/t"; } } void finn(const int n,int cur,vector<int>&stac,vector<int>&outL,int&count) { if((int)outL.size ()==n)//终点 { print(outL); count++; } if(cur!=n+1)//入栈 { //操作 stac.push_back(cur); //进入下层 finn(n,cur+1,stac,outL,count); //恢复 stac.pop_back (); } if(!stac.empty())//出栈 { //留底 int temp=stac[(int)stac.size ()-1]; //操作 outL.push_back (temp); stac.pop_back (); //进入下层 finn(n,cur,stac,outL,count); //恢复 outL.pop_back (); stac.push_back (temp); } } int f(const int n) { vector<int> stac; vector<int> outL; int count=0; finn(n,1,stac,outL,count); return count; } int main() { int n; cout<<"n="; cin>>n; cout<<"共"<<f(n)<<"个"<<endl; system("pause"); return 0; }