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

题意

算了吧,中文题不解释了

我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。

比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。

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

思路

这里为了方便说明,假设有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\n", ans[n]); return 0;
}
None1548kB269G++2018-02-07 22:59:09
05-11 09:36