三角形劃分平面區域 遞迴 遞推

2021-09-30 14:00:26 字數 1056 閱讀 1913

法一:這類題目一般來說是找規律,找出遞推式,找遞推式有以下兩種方

①直接找規律(這個要數感好),對於這一道題保險一點將第四幅圖畫出來,得38個(這個要手不殘)——不過這個來得簡單粗暴,有經驗的話其實答案出來得挺快

②推:第n個三角形,它的每條邊最多與前n-1個三角形的每2條邊相交,因此第n個三角形與前n-1個三角形共形成2*(n-1)3個交點。這些交點把第n個三角形分割成6(n-1)個線段。其中每條線段都把原來的區域一分為二,即新增6*(n-1)個區域。

都可以得出遞推式:a[i]=a[i-1]+a[i-1]*6;

於是就有了兩個**:

//遞迴版

#include

int f(int

x)int main()

//遞推版

#include

int a[105]=;//沒有三角形仍然還有乙個平面

int main()

其實還有乙個:記憶化(不過這題記憶化也沒啥用)

#include

int a[105]=,n;

int f(int

x)int main()

法二:看起來level超高,不過略麻煩,考試場上實在不行別裝逼。

思想:沒啥思想,就是想這個塊數是從哪兒來的,就像分類數數一樣數出來。

#include

int main()

//沒有三角形

if(n==1)

//沒有角上那塊

if(n==2)

//沒有中心與角之間那塊

ans+=n*3;//角

ans+=3*n*(n-2);//中心與角之間

ans+=2;//外面和中心

printf("%d",ans);

return

0;}

三角形劃分區域

題目描述 用n個三角形最多可以把平面分成幾個區域?輸入 輸入資料的第一行是乙個正整數t 1 t 10000 表示測試資料的數量。然後是t組測試資料,每組測試資料只包含乙個正整數n 1 n 10000 輸出 對於每組測試資料,請輸出題目中要求的結果。樣例輸入 樣例輸出 解題思路 本題是道簡單的找規律題...

遞推 數字三角形

input 57 3 88 1 0 2 7 4 4 4 5 2 6 5 output 30 數字三角形,可以說是一道很經典的題了,這道題應該出現在dp的入門題裡,但是在這裡提前介紹也是有原因的,因為遞推中同樣涉及了這個關係式的推導,好了,來仔細研究下這個三角形吧,總之這個三角形很重要,思想和方法一定...

凸多邊形區域劃分為三角形問題

rt 乙個凸多邊形區域,有n條邊,將其劃分為三角形區域,問共有多少種分割方法。1.我們從最簡單情況開始 n 3,f 3 1 2.當n 4,f 4 2 3.n邊時 我們從節點1開始考慮,要想分割成三角形區域,1不能和與它相鄰的點連線,所以1可以連線3,4,n 1 假設1連線i,則分割成的兩個區域分別為...