數字三角形問題—動態規劃
阿新 • • 發佈:2020-12-07
數字三角形問題
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;
}