推导过程中假定m[2]=1是最巧妙的设计
#include<iostream>
#include<algorithm>
using namespace std;
//catalan
int main(void)
{
int n,m[100];
cin >> n;
for(int i=2;i<=n;i++) m[i]=0;
m[2]=1;
for(int i=3;i<=n;i++)
{
for(int k=2;k<=i-1;k++)
{
m[i]+=m[k]*m[i-k+1];
}
}
cout << m[n];
}