算法笔记DFS篇:问题 E: 【递归入门】出栈序列统计

算法笔记DFS篇:问题 E: 【递归入门】出栈序列统计_第1张图片
算法笔记DFS篇:问题 E: 【递归入门】出栈序列统计_第2张图片

算法笔记DFS篇:问题 E: 【递归入门】出栈序列统计_第3张图片

#include 
#include
//按照这个提示做一个深度遍历,也就是判断出栈的数字,是否等于n如果是的话,那就sun++
//然后对两种情况 一个是出栈,一个是入栈进行对应的操作,我的想法是dfs有两个参数 一个是进栈,一个是出栈
int res,n;
void DFS(int in,int out){
    //分别代表进栈和出栈
    if(out>n){
    //如果出栈的数等于m了,那就是全部出栈了,总次数加一次
        res++;
        return;
    }
    if(in>n||out>in)
        return;//相当于是越界判断,j进栈数不可能大于n和出栈不能大于进栈
    else{
        //那就分情况讨论,要么就进栈,要么就出栈
        DFS(in+1,out);
        DFS(in,out+1);
    }


}

int main(){
    res=0;
    scanf("%d",&n);
    DFS(0,0);
    printf("%d",res);

}

你可能感兴趣的:(算法笔记)