栈

 

 

题解:该题是可以使用卡特兰数递推来解决,因为是从1到n顺序进栈的所以,定义一数组f[999],用于记录有几个数时的出栈的结果数量,当最后一个出栈的数字是x的时候,出栈的数可以分为两部分:

一部分比x大,一部分比x小

比x大就是f[n-x],比x小就是f[x-1]

当然f[0]和f[1]都是1,从2开始递推

代码如下:

#include<stdio.h>

int approach[999];
int main(void)
{
    int n;
    scanf("%d", &n);
    approach[1] = 1;
    approach[0] = 1;
    for (int i = 2; i <= n; i++)
    {
        for (int j = 1; j <= i; j++)
        {
            approach[i] += approach[j - 1] * approach[i - j];
        }
    }
    printf("%d", approach[n]);
    return 0;
}

 

上一篇:End-to-End Learning From Spectrum Data: A DL Approach for Wireless Signal Identification(阅读笔记)


下一篇:【Python基础——字符串 & 正则表达式】概述、总结