數字三角形問題(動態規劃)

2021-10-05 05:27:56 字數 896 閱讀 7340

1.題目描述:給定乙個由n行數字組成的數字三角形,如圖3-7所示。設計乙個演算法,計算出從三角形的頂至底的一條路徑,使該路徑經過的數字總和最大。

演算法設計:對於給定的由n行數字組成的數字三角形,計算從三角形的頂至底的路徑經過的數字和的最大值。

2.最優子結構:

從第x點到底層有一條最優的路徑lx,路徑上一點k,那麼從k到底層的最有路徑lk, 則lk包含於lx

3.狀態轉移方程:

t(i,j)表示第 i 層的第 j 個點到底層的最長路徑長度, w( i, j)表示其權值:

t(i,j) = w(i, j) +max ( t(i+1,j) , t(i+1,j+1) )

即第 i 層的第 j 個點到底層的最長路徑長度等於它的權值加上它的兩個"子結點"到底層的最長路徑長度中較大的

4.演算法實現:

用二維陣列儲存資料,tri[i][j]表示第 i 層的第 j 個資料:

時間複雜度:o(n^2)

int solve(int**a, int n)

} return a[0][0];

}

動態規劃 數字三角形問題

數字三角形問題 time limit 1000ms memory limit 65536kb problem description 給定乙個由n行數字組成的數字三角形如下圖所示。試設計乙個演算法,計算出從三角形的頂至底的一條路徑,使該路徑經過的數字總和最大。對於給定的由n行數字組成的數字三角形,計...

動態規劃 數字三角形問題

有乙個由非負整數組成的三角形,第一行只有乙個數,除了最下行之外每個數的左下方和右下方各有乙個數.3 24 10 1 4 3 2 20 從第一行的數開始,每次可以往左下或右下走一格,直到走到最下行,把沿途經過的數全部加起來,如何走才能使得這個和盡量大?輸入 三角形的行數n,數字三角形的各個數 從上到下...

動態規劃 數字三角形問題

problem description 給定乙個由n行數字組成的數字三角形如下圖所示。試設計乙個演算法,計算出從三角形的頂至底的一條路徑,使該路徑經過的數字總和最大。對於給定的由n行數字組成的數字三角形,計算從三角形的頂至底的路徑經過的數字和的最大值。input 輸入資料的第1行是數字三角形的行數n...