1. 程式人生 > 其它 >數字三角形問題—動態規劃

數字三角形問題—動態規劃

技術標籤:演算法設計c語言程式設計資料結構動態規劃求解

數字三角形問題

Description
給定一個由n行數字組成的數字三角形如下圖所示。試設計一個演算法,計算出從三角形的頂至底的一條路徑,使該路徑經過的數字總和最大。

對於給定的由n行數字組成的數字三角形,計算從三角形的頂至底的路徑經過的數字和的最大值。
Input
輸入資料的第1行是數字三角形的行數n,1≤n≤100。接下來n行是數字三角形各行中的數字。所有數字在0…99之間。
Output
輸出資料只有一個整數,表示計算出的最大值。
Sample
Input

5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
Output


30

程式碼實現及思想大概.(本人學的也不是很好,也處於一邊學習的路上,如有不合適或者理解錯誤的地方,還請斧正)由於時間原因,思想我會在後期更新。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    int f[111][111];
    cin>>n;
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<=i;j++)
        {
            cin>>f[i][j];
        }
} for (int i=n-2;i>=0;i--) { for (int j=0;j<=i;j++) { f[i][j]=max(f[i+1][j],f[i+1][j+1])+f[i][j]; } } cout<<f[0][0]; return 0; }