HDU2067小兔的棋盘(卡特兰数)

题目链接:传送门
分析:这一个是关于卡特兰数数的应用,这里有一篇关于卡特兰数的应用汇总“快点我”,里面把许多卡特兰数的情况基本都汇总了一遍,以及公式的基本介绍。
而本题的棋盘问题便是卡特兰数应用的一种
AC代码:

#include<iostream>
using namespace std;
int main(){
	long long h[100]={0},n,num=0;
	h[0]=1;	h[1]=1;
	for(int i=2;i<=35;i++)
		for(int j=0;j<=i-1;j++){
			h[i]+=h[j]*h[i-1-j];
		}
		while(cin>>n&&n!=-1){
			num++;
			cout<<num<<" "<<n<<" "<<h[n]*2<<endl;
		}
}

小结:该题目的原型其实可以说是1–n的出栈顺序问题,固直接套卡特兰数便可以了。。。(要熟记卡特兰数的应用?)

猜你喜欢

转载自blog.csdn.net/weixin_43556295/article/details/86684973