先來解釋一下什麼是線性dp
在求狀態轉移方程時,有明顯的線性求取順序
比如揹包問題
這道題目我們先給數字編號
分析
dp問題的時間複雜度如何分析
一般是狀態數量乘以轉移的計算量(就是算每個狀態需要的計算量)
本題大致就是500 * 500
1 #include 2using
namespace
std;
3const
int n = 510, inf =1e9;
4int a[n][n]; //
儲存三角形中的每乙個點
5int
dp[n][n];
6int
main() 13}
14for (int i = 1; i <= n; i++) 18}
19 dp[1][1] = a[1][1]; //
邊界 20
for (int i = 2; i <= n; i++) 24}
25int res = -inf;
26for (int i = 1; i <= n; i++)
29 cout << res <
30return0;
31 }
數字三角形
題目描述 示出了乙個數字三角形。請編乙個程式計算從頂至底的某處的一條路 徑,使該路徑所經過的數字的總和最大。每一步可沿左斜線向下或右斜線向下走 1 三角形行數 25 三角形中的數字為整數 1000 輸入第一行為n,表示有n行 後面n行表示三角形每條路的路徑權 輸出路徑所經過的數字的總和最大的答案 樣...
數字三角形
description 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?input 輸入資料首先包括乙個整數c,表示測試例項的個數,每個測試例項的第一行是乙個整數n 1 n 100 表示數塔的高度,接下來用n行數字表示數塔,其中第i行有個i個整數,...
數字三角形
3 8 8 1 0 2 7 4 4 4 5 2 6 5 上圖給出了乙個數字三角形。從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到乙個和,和最大的路徑稱為最佳路徑。你的任務就是求出最佳路徑上的數字之和。input 1 5 7 3 8 8 1 0 2 7 4 4 4 ...