【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;
}
	

  

  

posted @ 2016-09-29 20:14  MashiroSky  阅读(360)  评论(0编辑  收藏  举报