HDU-2050 折线分割平面 找规律&递推

题目链接:https://cn.vjudge.net/problem/HDU-2050

题意

算了吧,中文题不解释了
我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。
比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。

思路

这里为了方便说明,假设有n个折线的部分最多的图叫做图n
我们可以发现,任意图n中的每个射线都穿过了2n-2条射线,也就是任意两条射线两两相交

设想现在我们在图n中放上两条射线,想让图n变成图n-1
就必须让这两条射线每个都穿过图n中的2n条射线
而且将要被穿过的两条旧射线之间必然有一个小部分,会被新射线穿过,变成两个小部分
且最后被穿过的旧射线后的一个小部分,也会被新射线穿过,变成两个小部分
这样一来,就可以写出递推公式:

[a_n=a_{n-1}+4n-3 ]

代码

#include <cstdio>
int n, ans[10000+5];
void init(void){
    ans[1]=2;
    for (int i=2; i<10000+5; i++)
        ans[i]=ans[i-1]+4*i-3;
}

int main(void){
    init();
    scanf("%*d");
    while (scanf("%d", &n)==1 && n)
        printf("%d
", ans[n]);

    return 0;
}

Time Memory Length Lang Submitted
None 1548kB 269 G++ 2018-02-07 22:59:09
原文地址:https://www.cnblogs.com/tanglizi/p/8429006.html