c++ 统计出栈

Posted lja001162

tags:

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

题目描述

1~n依次入栈,统计不同的出栈的方式

栈是常用的一种数据结构,有n令元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列。你已经知道栈的操作有两?种:push和pop,前者是将一个元素进栈,后者是将栈顶元素弹出。现在要使用这两种操作,由一个操作序列可以得到一系列的输出序列。请你编程求出对于给定的n,计算并输出由操作数序列1,2,…,n,经过一系列操作可能得到的输出序列总数。

输入

一个整数n(1<=n<=15)

输出

一个整数,即可能输出序列的总数目。

样例输入

3

样例输出

5

Source Code

#include <iostream>
#include <stdio.h>
using namespace std;
int n;
int t;
int s[20],top;
int opt[20];
int l = 0;
int ans = 0;
void dfs(int u)

    if (l == n)
    
        ans ++;
        return ;
    
    if (t <= n)//判断是否所有数据都已经入栈 如果有数据没有入栈,则执行
    
        top ++;//栈顶指针向上移
        s[top] = t;//把t入栈
        t ++;//栈里面的数量 +1   或者已使用的数量 +1
        dfs(u + 1);//递归找下一个数字
        top --;//出栈
        t --;//栈里面的数量 -1
    
    if (top >= 1)
    
        int tmp = s[top];
        l ++;
        opt[l] = s[top];
        top --;
        dfs(u + 1);
        top ++;
        s[top] = tmp;
        l --;
    

int main()

    cin >> n;
    t = 1;
    top = 0;
    dfs(1);
    cout << ans << endl;

(注释待续)

以上是关于c++ 统计出栈的主要内容,如果未能解决你的问题,请参考以下文章

不要搜索,出栈序列统计

出栈序列统计

出栈序列统计

vijos - P1122出栈序列统计 (卡特兰数)

CodeForces 224C Bracket Sequence(栈)

如何在C++中 统计多行文本中的行数、单词数及字符数