我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。
輸入資料的第一行是乙個整數c,表示測試例項的個數,然後是c 行資料,每行包含乙個整數n(0
對於每個測試例項,請輸出平面的最大分割數,每個例項的輸出佔一行。
2 1 22
7先從直線分割開始分析,直線分割要想盡可能多的分塊,需要直線與平面內的其他直線都相交,並且沒有三條直線交於一點,因此當第n條直線新增時,要與n-1條直線相交,構成n-1個交點,從而會增加n個平面,所以n條直線分割的平面數f(n) = f(n-1) + n, 而f(1) = 2, 通過遞迴就可以得到 f
(n)=
n(n+
1)2+
1 f(n
)=n(
n+1)
2+1接下來開始分析折線分割,因為每次新增一條折線,就相當於新增兩條相交的直線,所以:
*先假設所新增的折線為兩條平行直線,那麼新增第n條折線的時候,平面內已經有2n-2條直線,那麼新增第2n-1條和第2n條直線都會增加2n-2個交點,產生2n-1個平面;
*那麼新增第n條折線,會新增 2(2n-1) 個平面,總的平面數根據遞推,應該是:2n
2+1 2n2
+1; *然後,在來考慮折線,折線就是沒兩條直線相交,切折線兩邊是射線,也就是說,相交之後,交點另一部分的分塊是合二為一了,所以2n條直線相交,就少了n塊;
*因此,最後折線 : f
(n)=
2n2−
n+1 f(n
)=2n
2−n+
1
#include
using
namespace
std;
int main()
}
HDOJ 2050 折線分割平面(簡單遞推)
我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。input 輸入資料的第一行是乙個整數c,表示測試例項的個數,然後是c 行資料,每行包含乙個整數n 0output...
hd水題 hdoj2050 折線分割平面
problem description 我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。輸入資料的第一行是乙個整數c,表示測試例項的個數,然後是c 行資料,每行包...
HDU2050 折線分割平面
題目描述 problem description 我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。輸入資料的第一行是乙個整數c,表示測試例項的個數,然後是c 行資...