HDU1249 三角形 遞推

2021-07-03 02:12:31 字數 850 閱讀 5948

分析:知道了直線和折線分割平面的情況這題就很簡單了。我們知道,對於第i個三角形來說,其前面已經有了(i-1)個三角形==>有(3i-3)條邊,對於第i個三角形,其每一條邊最多能和之前的每個三角形的2條邊有交點,即能和前面的(2i-2)條邊各有乙個交點,而這些交點會把第i個三角形的一條邊分割成(2i-1)條線段,每一條線段會增加乙個平面,這樣3條邊就增加了(2i-1)×3個平面,考慮到在三角形的三個頂點,在每乙個頂點處相鄰的兩個線段並不會增加平面的數目,所以在三個頂點處的6個線段實質上只增加了3個平面,所以要減去這3個多算的平面數,這樣,第i個三角形就會比i-1個三角形形成的平面數多出(2i-1)×3-3=6×(i-1)個了,即遞推關係為:f(n)=f(n-1)+6×(i-1)。

實現**如下:

#include #include using namespace std;

int main()

return 0;

}

本題也可以用尤拉公式來做:

尤拉公式:簡單多面體的頂點數v,稜數e以及面數f之間有:v-e+f=2。

那麼對於本題來說,e[i]=e[i-1]+(4i-3)*3;v[i]=v[i-1]+(2i-1)*3;

實現**如下:

#include #include #include #define max 10001

int v[max],e[max];

void solve()

{ int i;

memset(v,0,sizeof(v));

memset(e,0,sizeof(e));

e[1]=v[1]=3;

for(i=2;i

遞推 數字三角形

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

數字三角形 遞推演算法

如下所示為乙個數字三角形。請編乙個程式計算從頂到底的某處的一條路徑,使該路徑所經過的數字總和最大。只要求輸出總和。1 一步可沿左斜線向下或右斜線向下走 2 三角形行數小於等於100 3 三角形中的數字為0,1,99 測試資料通過鍵盤逐行輸入,如上例資料應以如下所示格式輸入 57 3 88 1 0 2...

求大三角形中三角形個數

一道筆試程式設計題要求求乙個大三角形中所有小三角形的個數,大約是下面這種情況 首先想到是的將問題由求邊長為n的三角形個數 求邊長為n 1的三角形個數 求邊長為1的三角形個數 1,回溯求得所有三角形個數。但是再仔細一看因為有重疊三角形和倒置的三角形,所以這個方法不可行。接著找到三角形個數由三部分組成 ...