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...