我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。
2 1 2
27
题解:按照之前题的套路,看到直接开始找递归方程,假设f(n)存储的是n条折线所分割最多块数,然后推出如何从f(n-1)能推出f(n),假设先画好前面n-1条折线,当增加第n条拆线时,此时与图形新的交点最多有2*2(n-1)个,分出的部分多出了2*2(n-1)+1 所以推出f(n)=f(n-1)+4*(n-1)+1,n>=3
代码:
#include<stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> int main() { int t,i,n; long long int a[10001]; a[0]=0;//初始化 a[1]=2; a[2]=7; for(i=3;i<10001;i++) { a[i]=a[i-1]+4*(i-1)+1; } scanf("%d",&t); while(t--) { scanf("%d",&n); printf("%lld\n",a[n]); } return 0; }