(递推)三角形分割平面问题

题目描述
用N个三角形最多可以把平面分成几个区域?

输入
输入数据的第一行是一个正整数T(1<=T<=10000),表示测试数据的数量.然后是T组测试数据,每组测试数据只包含一个正整数N(1<=N<=10000).

输出
对于每组测试数据,请输出题目中要求的结果.

样例输入
2
1
2

样例输出
2
8

一个三角形,把平面分割为两部分,一个是内部,一个是外部。
n个三角形摆放位置可以重叠,我们来分析一下两个三角形的情况,这里写图片描述
可见,共有八个部分,多出来的六个部分刚好就是交点的个数,一个线与三角形相交最多有两个交点,每个三角形有三条边,有两个三角形时是用一个三角形分割另一个三角形,因此,交点个数:1*(3*2),当有一个三角形分割另两个三角形时,2*(3*2),可以认为,那个(3*2)就是一个三角形分割另一个三角形时新产生的交点个数,因此f(n)=f(n-1)+(n-1)*6

#include<iostream>
using namespace std;
int main(){
    int n,a,i;
    cin>>n;
    while(n--){
        cin>>a;
        int b=2,c;
        if(a==1) cout<<2<<endl;
        else{
            for(i=2;i<=a;++i){
                c=b+6*(i-1);
                b=c;
            }   
            cout<<c<<endl;
        }

    }
}

猜你喜欢

转载自blog.csdn.net/qq_40828914/article/details/80723849