栈1--出栈序列
一、心得
二、题目及分析
进栈序列是123,求所有的出栈序列
用回溯法做
三、代码及结果
1 #include <iostream> 2 #include <stack> 3 using namespace std; 4 5 stack<int> sta; 6 int ans[4]; 7 int total=0; 8 9 void print(){ 10 total++; 11 cout<<total<<": "<<endl; 12 for(int i=1;i<=3;i++){ 13 cout<<ans[i]<<" "; 14 } 15 cout<<endl; 16 } 17 18 void search(int step,int n,int write){ 19 if(step==7&&write==4) print(); 20 else 21 for(int i=1;i<=2;i++){ 22 if(i==1){//进栈操作 23 if(n<=3){ 24 sta.push(n); 25 search(step+1,n+1,write); 26 sta.pop(); 27 } 28 } 29 if(i==2){ 30 if(!sta.empty()){ 31 ans[write]=sta.top(); 32 sta.pop(); 33 search(step+1,n,write+1); 34 sta.push(ans[write]); 35 } 36 } 37 } 38 } 39 40 int main(){ 41 search(1,1,1); 42 return 0; 43 }