hdu2050 折线分割平面---递推

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=2050

题目大意:

求n条折线分割平面的最大数目

思路:

先看n条直线的时候

一条直线 2个平面

两条直线 4个平面

三条直线 7个平面

四条直线 11个平面

设n条直线的时候,平面数目为f(n),当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。这样就会得到n-1个交点。这些交点将第n条直线分为2条射线和n-2条线段。而每条射线和线段将以有的区域一分为二。所以f(n) = f(n - 1) + n,其中f(1) = 2;

再看n条折线的时候

每加一条折线,就增加了两条相交的直线,当画第n条折线时,前面已经存在n-1条折线(即2n-2条直线)了,第n条折线包含的这两条直线分别和前面2n-2条直线相交,然后这两条直线还有一个交点,交点数再加上1,然而,我们注意到,在折线上的这个交点并不会使分割的平面数变化,所以这个交点不能算进去。那么最后就有f(n)=f(n-1)+2*(2n-2)+1=f(n-1)+4n-3;进一步求得通项公式:f(n)=2*n*n-n+1。或者末尾这样理解:当n-1条折线时,区域数为f(n-1)。为了使增加的区域最多,则折线的两边的线段要和n-1条折线的边,即2*(n-1)条线段相交。那么新增的线段数为4*(n-1),射线数为2。但要注意的是,折线本身相邻的两线段只能增加一个区域。

代码不重要,主要是思路

posted @ 2018-04-02 10:19  _努力努力再努力x  阅读(131)  评论(0编辑  收藏  举报