栈1--出栈序列

Posted 范仁义

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了栈1--出栈序列相关的知识,希望对你有一定的参考价值。

栈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 }

以上是关于栈1--出栈序列的主要内容,如果未能解决你的问题,请参考以下文章

栈-出栈序列正确性分析

判断栈的出栈序列是否正确

判断栈的出栈序列是否正确

可能的出栈序列问题

栈(出栈序列)

题解——出栈序列统计