數字三角形(簡單dp)

2021-08-21 20:54:07 字數 985 閱讀 3633

數字三角形:

給定乙個由 n行數字組成的數字三角形如下圖所示。試設計乙個演算法,計算出從三角形 的頂至底的一條路徑(每一步可沿左斜線向下或右斜線向下),使該路徑經過的數字總和最大。

輸入有n+1行:

第 1 行是數字三角形的行數 n,1<=n<=100。

接下來 n行是數字三角形各行中的數字。所有數字在0..99 之間。

輸出最大路徑的值。

在這裡給出一組輸入。例如:

5 

7 3 8

8 1 0

2 7 4 4

4 5 2 6 5

在這裡給出相應的輸出。例如:

30
題意:中文題也挺好理解,就不解釋了。

#include using namespace std;

int dp[400][400];

int a[400][400];

int main()

}// 輸入數字三角形 ,從1開始輸入是因為下面,待會兒解釋。

int ans=0;

for (int i = 1; i <= n ;i++)

} // 因為只能斜著走,也就是這裡的j和j-1每次加上其中最大的那個,當然是加的上一行,即i-1行。

// 從1開始輸入,這樣保證dp[i-1][j-1],dp[i-1][j]中的下標不會小於零。

int max=-1;

for (int i = 1; i <= n;i++)

}// 求出了最後一行,每個數對應的最大的和,然後再找乙個這裡面最大的,就可以了。

cout << max << endl;

return 0;

}

數字三角形 DP

數字三角形 時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 問題描述 小hi和小ho在經歷了螃蟹先生的任務之後被獎勵了一次出國旅遊的機會,於是他們來到了大洋彼岸的美國。美國人民的生活非常有意思,經常會有形形色色 奇奇怪怪的活動舉辦,這不,小hi和小ho剛剛下飛機,就趕上了當...

(dp)數字三角形

數字三角形問題。有乙個由非負整數組成的三角形,第一行只有乙個數,除了最下行 之外每個數的左下方和右下方各有乙個數 從第一行的數開始,每次可以往左下或右下走一格,直到走到最下行,把沿途經過的數 全部加起來。如何走才能使得這個和盡量大?具體實現 中的d我們用maxsum表示 最初的位置我們用d存 1.把...

數字三角形 dp

給定乙個如下圖所示的數字三角形,從頂部出發,在每一結點可以選擇移動至其左下方的結點或移動至其右下方的結點,一直走到底層,要求找出一條路徑,使路徑上的數字的和最大。73 8 8 1 0 2 7 4 4 4 5 2 6 5 輸入格式 第一行包含整數n,表示數字三角形的層數。接下來n行,每行包含若干整數,...