题目链接:传送门
分析:这一个是关于卡特兰数数的应用,这里有一篇关于卡特兰数的应用汇总“快点我”,里面把许多卡特兰数的情况基本都汇总了一遍,以及公式的基本介绍。
而本题的棋盘问题便是卡特兰数应用的一种
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的出栈顺序问题,固直接套卡特兰数便可以了。。。(要熟记卡特兰数的应用?)