首页 > 其他 > 详细

Circle - SGU 130(递推)

时间:2015-09-25 21:37:15      阅读:296      评论:0      收藏:0      [点我收藏+]

题目大意:一个圆上有2K个点,用K个线把他们连接起来,求出这些线最少可以把这个圆分成P部分,有N种分割方法。输出N和P。

分析:分割线一定是相互不相交的线,所以可以把这写分成两部分,f[i] += f[j]*f[i-j-1](j[0....i-1])。

===========================================================================================

#include<stdio.h>
#include<math.h>
#include<algorithm>
#include<iostream>
using namespace std;

const int MAXN = 31;

int main()
{
    long long f[MAXN] = {1, 1, 2};

    for(int i=3; i<MAXN; i++)
    for(int j=0; j<i; j++)
    {
        f[i] += f[j] * f[i-j-1];
    }

    int N;

    scanf("%d", &N);

    printf("%lld %d\n", f[N], N+1);

    return 0;
}

 

Circle - SGU 130(递推)

原文:http://www.cnblogs.com/liuxin13/p/4839365.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!