2860【问题描述】
圆周上有N个点。连接任意多条(可能是0条)不相交的弦(共用端点也算相交)共有多少种方案?
【输入格式】
一个整数N,表示圆上点的数目
【输出格式】
一个整数,表示方案数 mod 12345 的结果
【输入样例】
4
【输出样例】
9
【样例解释】
时间限制:1秒 内存限制:64M
【数据范围】
n<=1000
此题就是一道卡特兰数的题,考虑一条边的连法,这样就分成了2部分,可以当做卡特兰数了。
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cstring>
using namespace std;
const int maxn=1005;
const int mod=12345;
int m,n;
long long d[maxn]={0};
long long dfs(int x)
{
if(x<2) return 1;
if(d[x]) return d[x];
for(int i=0;i<x;i++)
d[x]=(d[x]+dfs(i)*dfs(x-i-2)%mod)%mod;
return d[x];
}
int main()
{
scanf("%d",&n);
cout<<dfs(n)<<endl;
return 0;
}