算法竞赛宝典 递推算法 平面分割

【问题描述】凸多边形的三角形剖分(triangle.cpp/c/pas)

传说魔法世界的创世神使用过的一件上古神器遗失在一个凸多边形的二维魔法空间中,谁若拥有这件上古神器,将会成为世界之主。修罗王很想拥有这件上古神器,他打算通过若干条互不相交的对角线,把这个多边形剖分成了若干个三角形来寻找,现在的任务是输入凸多边形的边数n,求不同剖分的方案数Cn。比如当n=5时,如图所示,有如下5种不同的方案,所以C5=5。

【输入格式】

一个整数n。

【输出格式】

一个整数,即方案数。

【输入样例】

5

【输出样例】

5

//经过一系列的推导,不过中间有个步骤不理解,需要思考下

#include<iostream>
#include<bits/stdc++.h>
const int Max=100;
using namespace std;
typedef long long ll;

ll f(int n)
{
	if(n==3)
		return 1;
	return ((4*n-10)*f(n-1))/(n-1);
//	return (4*n-10)/(n-1)*f(n-1);//不要写成这样 ,会损失精度的!!!! 
}
int main()
{
	int n;
	while(cin>>n)
	{
		if(n<=Max && n>=3)
			printf("%lld\n",f(n));
		else
			printf("counld not count!\n");
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/CJ_035/article/details/79767150