解法一:(遞迴)
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 陣列三角形如下圖示出了乙個數字三角形。請編乙個程式計算從頂至底的某處的一條路徑,使該路徑所經過的...