數字三角形問題求解

2021-08-26 18:26:38 字數 774 閱讀 4432

1. 問題描述

有乙個像這樣的數字三角形: 7

3 88 1 0

2 7 4 4

4 5 2 6 5

從頂點開始,每個數字向下層走只能有左下和右下兩個方向,求出到達最後一行時最大的路徑之和.

input

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

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

比如input是:57

3 88 1 0

2 7 4 4

4 5 2 6 5

則output是30

2. 問題求解

這是乙個典型的動態規劃求解問題。

**如下:

#include using namespace std;

int getmax(int m, int n)

int main()

; int n = 0;

cin >> n;

for(int i=0; i> road[i][j];

} }int dist[100][100] = ;

dist[0][0] = road[0][0];

for(int i=1; imaxsum) maxsum = dist[n-1][i];

} cout << maxsum << endl;

return 0;

}

動態規劃的思想就是在求解的過程中要用到子問題,需要儲存子問題的解,用空間換時間。

數字三角形求解

題目 如圖所示,32 3 4 3 4 4 7個數字構成三層的數字三角形,從屬關係為樹形關係。要求按照從屬關係,在每一層選擇乙個數,使最後的和最大。分析 如果從下往下選擇的話,越往下選擇越多,問題就越複雜。考慮從下往上選擇,採用動態規劃法,從區域性開始考慮。區域性最大,則構成整體最大。我是用c 寫的。...

數字三角形問題

數字三角形問題 標籤 動態規劃 雜談分類 演算法設計 34 5 11 9 8 15 21 13 4 這是乙個數字三角形。請編乙個程式計算從頂至底的某處的一條路徑,使該路徑所經過的數字的總和最大。每一步可沿左斜線向下或右斜線向下走 1 三角形行數 200 三角形中的數字為整數0,1,99 輸入格式 第...

數字三角形問題

給定乙個由n行數字組成的數字三角形,設計乙個演算法,計算出從三角形的頂至底的一條路徑,使該路徑經過的數字總和最大。0,0 1,0 1,1 2,0 2,1 2,2 3,0 3,1 3,2 3,3 思路 動態規劃 動態方程 sum i,j a i,j max sum i,j 表示從 i,j 出發時能得到...