數字三角形相關解法

2021-10-05 13:03:37 字數 1342 閱讀 1684

解法一:(遞迴)

max_sum(i,j)用來計算d[i][j]到底邊最長路徑之和。用乙個陣列maxsum[i][j]儲存d[i][j]到底邊最長路徑之和,避免重複計算,初始值是-1。根據遞迴的原理,遞迴的條件是:maxsum[i][j] = max(max_sum(i+1,j),max_sum(i+1,j+1)) + d[i][j];

#include

#include

#include

using

namespace std;

#define max 101

int d[max]

[max]

;//儲存(i,j)元素的值

int maxsum[max]

[max]

;//儲存d[i][j]到底邊最長路徑之和,避免重複計算,初始值是-1

intmax_sum

(int i,

int j)

;//計算d[i][j]到底邊最長路徑之和

int n;

//三角形行數

intmax_sum

(int i,

int j)

if(i == n)

//遞迴

int x =

max_sum

(i+1

,j);

int y =

max_sum

(i+1

,j+1);

maxsum[i]

[j]=

max(x,y)

+ d[i]

[j];

return maxsum[i]

[j];

}int

main()

} cout <<

max_sum(1

,1)<< endl;

return0;

}

解法二:(動態規劃)

利用了滾動陣列,節省了空間

#include

#include

using

namespace std;

#define max 101

int d[max]

[max]

;int maxsum[max]

[max]

;int

main()

三角形相關

面積公式 1.s 1 2absinc 1 2acsinb 1 2bcsina 2.s 根號下p p a p b p c 其中p a b c 2 3.s abc 4r r為外接圓的半徑 4.s 1 2 x1 y2 x2 y3 x3 y1 x2 y1 x3 y2 x1 y3 其中三個頂點的座標分別為a ...

三角形相關重點

acm模版 設三角形的三條邊為a,b,c,且不妨假設a b c.三角形面積可以根據海 式求得 s sqrt p p a p b p c p a b c 2 費馬點 該點到三角形三個頂點的距離之和最小。有個有趣的結論 若三角形的三個內角均小於120度,那麼該點連線三個頂點形成的三個角均為120度 若三...

三角形相關演算法

1 陣列中能組成三角形的數目 int count vector int s int sum 0 sort s.begin s.end for int i 2 i isize i return sum 2 陣列三角形如下圖示出了乙個數字三角形。請編乙個程式計算從頂至底的某處的一條路徑,使該路徑所經過的...