您的位置:首页 > 其它

NYOJ 1103 —— m划分为n个正整数的个数

2016-05-18 21:37 417 查看

多边形划分

时间限制:1000 ms  |  内存限制:65535 KB

描述
Give you a convex(凸边形), diagonal n-3 disjoint divided into n-2 triangles(直线), for different number of methods, such as n=5, there are 5 kinds of partition method, as shown in Figure
输入The first line of the input is a n (1<=n<=1000), expressed n data set.
The next n lines each behavior an integer m (3<=m<=18), namely the convex edges.输出For each give m,, output how many classification methods.
example output: Case #a : b样例输入
3
3
4
5

样例输出
Case #1 : 1
Case #2 : 2
Case #3 : 5

提示Catalan number 

#include <cstdio>
#include <iostream>

using namespace std;

int dp[20];

int f(int n)
{
if(dp
)    return dp
;
if(n == 2 || n == 3)    return 1;
if(n == 4)    return 2;

int ret = 0;
for(int i=2; i<n; i++) {
ret += f(i) * f(n-i+1);
}
return dp
= ret;
}

int main ()
{
int n, m;
scanf("%d", &n);
for(int kase=1; kase<=n; kase++) {
scanf("%d", &m);
printf("Case #%d : %d\n", kase, f(m));
}

return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: