一、心得

 

二、题目及分析

进栈序列是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 }

栈1--出栈序列

分类:

技术点:

相关文章: