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

2021-10-03 17:44:44 字數 927 閱讀 4677

description

下圖給出了乙個數字三角形,請編寫乙個程式,計算從頂至底的某處的一條路徑,使該路徑所經過的數字和最大

input

有很多個測試案例,對於每乙個測試案例, 通過鍵盤逐行輸入,第1行是輸入整數(如果該整數是0,就表示結束,不需要再處理),表示三角形行數n,然後是n行數

output

輸出最大值

example input57

3 88 1 0

2 7 4 4

4 5 2 6 5

example output

標準的動態規劃問題,設乙個dp陣列,代表當前座標下的最大路徑,arr陣列用來儲存數字。我們從最後一層倒過來考慮,轉換思路,從下向上求出答案狀態轉移方程式:dp(i)(j)= max(dp(i + 1)(j), a(i + 1)(j + 1))同時利用模擬佇列的方法輸出路徑 。用乙個佇列,tail表示每乙個輸入數字的標號,(1—(1+n)*n/2),同時記錄每乙個數字的父親點

#include #include using namespace std;

int arr[21][21];

int dp[21][21];

struct que q[410];

void print(int l)

}int main(void)

}//輸入數字

for (j = 1; j <= n; j++)

for (i = n - 1 ; i >= 1; i--)

else

tail++;}}

tail--;

cout <<"最大的步數為"<< dp[1][1] << endl;

cout << "路徑為" << endl;

print(tail);

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