折线分割平面

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

Input
输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(0
Output
对于每个测试实例,请输出平面的最大分割数,每个实例的输出占一行。

Sample Input
2
1
2
Sample Output
2
7

这道题用递推的方法。首先拿直线来看,第n条直线与前n-1条直线如果切割出的平面最多的话,就必与前n-1条直线都相交,则平面多分割出n-1+1=n个;类比折线,第n条折线与前n-1条折线都相交,有2*2*(n-1)个交点,则多了4*(n-1)+1个平面,所以f[n]=f[n+1]+4*(n-1)+1,代码如下:

#include
#include
int main()
{
    int i,k,a,s;
    long long f[10001];
    scanf("%d",&s);
    for(k=0;k     {
        scanf("%d",&a);
        f[0]=0;f[1]=2;f[2]=7;
        for(i=3;i<=10000;i++)
        {
            f[i]=f[i-1]+4*(i-1)+1;
        }
        printf("%lld\n",f[a]);
    }
    return 0;
}

你可能感兴趣的:(折线分割平面)