zznuoj 2119 凸n边形分解成n-2个小三角形
程序员文章站
2024-03-15 21:13:24
...
题目描述
整个世界都在散发着恋爱的恶臭,只有spring依旧保持着单身贵族的清香。
spring单身久了,煮饺子看见两个黏在一起的都要强行分开,所以在看到凸n边形的时候,总是习惯性的拆分成n-2个小三角形,毕竟第三者插足是spring最喜闻乐见的,那么给出一个凸n边形,有多少种方法能够将凸n边形分解成n-2个小三角形。
输入
输入一个正整数n,表示有个凸n变形 2<n<30
输出
输出有多少种方法能够将凸n边形分解成n-2个小三角形。
样例输入
3 5
样例输出
1 5
利用卡特兰数列。C(2n-4,n-2)/n-1
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll Cnm(int n,int m)
{
vector<vector<ll> > Combi(n+1,vector<ll>(m+1,(ll)0));
for(int i=0; i<(int)Combi[0].size(); i++)
Combi[0][i]=(ll)0;
for(int i=0; i<(int)Combi.size(); i++)
Combi[i][0]=(ll)1;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=(i>m?m:i); j++)
{
Combi[i][j]=(Combi[i-1][j-1]+Combi[i-1][j]);
}
}
return Combi.back().back();
}
int main()
{
int n;
while(cin>>n)
{
int a=2*n-4; int b=n-2; int c=n-1;
cout<<Cnm(a,b)/c<<endl;
}
return 0;
}