直線分平面到折線分平面再到平面分空間

有一道折線分平面問題:http://acm.hdu.edu.cn/showproblem.php?pid=2050


在做這道題之前,先按照題目所說的先看下“直線分平面”的做法:


如圖所示可以找到規(guī)律:假如當(dāng)有n-1條直線時平面被分為f(n-1)個區(qū)域,要使第n條直線切成的區(qū)域數(shù)最多,那么第n條直線就必須與前n-1條直線相交且不能有同一交點,那么就會增加n-1個交點,多出(n-1+1)=(n)個平面。即f(n)=f(n-1)+n;然后用高中數(shù)列的累加法(把這條式子看做是an=a(n-1)+n就明白了)就可以求出f(n)=n(n+1)/2+1。

由直線分平面的解題步驟可知分出的平面的個數(shù)和交點有關(guān)。


從而類似的,折線分平面的規(guī)律為:假如當(dāng)有n-1條折線時平面被分成f(n-1)個區(qū)域,要使第n條折線切成的區(qū)域數(shù)最多,那么第n條折線就必須與前n-1條折線相交,即與2*(n-1)條線段相交,新增的交點有4*(n-1)個,由圖易知增加4(n-1)+1個平面。即f(n)=f(n-1)+4(n-1)+1;后用高中數(shù)列的累加法(把這條式子看做是an=a(n-1)+4(n-1)+1就明白了)就可以求出f(n)=2n^2-n+1;

解題代碼如下:

#include<stdio.h>

int main()

{

? ? int n;

? ? scanf("%d",&n);

? ? while(n--)

? ? {

? ? ? ? int m;

? ? ? ? scanf("%d",&m);

? ? ? ? printf("%d\n",2*m*m-m+1);

? ? }

? ? return 0;

}

由折線分平面,在網(wǎng)上我又發(fā)現(xiàn)杭電acm題庫還有道拓展到“平面分空間”的題目:

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


相應(yīng)的解題思路:從前兩題的規(guī)律可知拓展到三維中所切成的區(qū)域數(shù)和交線有關(guān)。假如當(dāng)有n-1個平面時分出來的控件數(shù)有f(n-1)個,要使第n個平面切下去時有最多的空間數(shù),則第n個平面必須與前n-1個平面相交且不能有共同的交線,即增加n-1條交線,而這n-1條交線把第n個平面最多分成g(n-1)個區(qū)域(g(n)為直線分平面的f(n),即g(n)=n(n+1)/2+1,這里有點難理解,畫個圖或者空間想象一下)。即f(n)=f(n-1)+g(n-1),接著可求出f(n)=(n^3+5n)/6+1;

解題代碼如下:

#include<stdio.h>

int main()

{

? ? int m;

? ? while(scanf("%d",&m)!=EOF)

? ? {

? ? ? ? printf("%d\n",(m*m*m+5*m)/6+1);

? ? }

? ? return 0;

}

總結(jié),有時候不要盲目做題,找規(guī)律便能解決,還有發(fā)現(xiàn)數(shù)學(xué)能力較差還是比較吃虧的。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容