很明显的卡特兰数。
假如n=1,那么显然就有一种情况
n=2,有两种情况
n=3,我们依次标1、2、3、4、5、6,六个点,还是分三种情况,假如1、2相连,那么3、4、5、6就是n=2的情况;1与4相连,2只能与3相连,5、6只能相连;1与6相连,2、3、4、5随意连,也就是2*1=2种,所以5种情况。(1不能与3相连,因为剩下2点,题目中给出每个点只能连1次且线与线不能香蕉相交)
n=4,我们分别标一下1、2、3、4、5、6、7、8,八个点,分四种情况,1、2相连,3、4、5、6、7、8随意连;1、4相连,2只能与3相连,5、6、7、8随意连;1、6相连,7只能连8,2、3、4、5随意连;1、8相连,2、3、4、5、6、7随意连,加以来是14种
以此类推
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=3e3+20;
const int mod=100000007;
int n;
ll a[maxn]={1};
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=0;j<i;j++){
a[i]+=a[j]*a[i-j-1];
a[i]%=mod;
}
}
printf("%lld\n",a[n]);
return 0;
}