【codevs1086】 栈

时间:2023-03-09 04:31:01
【codevs1086】 栈

http://codevs.cn/problem/1086/ (题目链接)

题意

  给出1~n总共n个数,对它们进行入栈出栈操作,问一共有多少种不同的方案。

Solution

  找规律手玩前5个1 2 5 14 42发现是卡特兰数,再见。

代码

#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define LL long long
#define inf 2147483640
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std; int main() {
int n,f[10010];
scanf("%d",&n);
f[0]=1;
for (int i=1;i<=n;i++) f[i]=(LL)f[i-1]*(4*i-2)/(i+1); //O(n)递推式
printf("%d\n",f[n]);
return 0;
}