
题目分析:
就是我们向斜左下或斜右下走,然后我们要走出一个路径,我们要求出所有路径距离最大的那条,并把它输出来。
思路:
我们从最底层开始往上走,然后推出该公式a[i][j]+=max(a[i+1][j],a[i+1][j+1])。
#include<iostream>
#include<cmath>
using namespace std;
int a[510][510];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<=i;j++) cin>>a[i][j];
for(int i=n-1;i>=0;i--)
for(int j=i;j>=0;j--){
a[i][j]+=max(a[i+1][j],a[i+1][j+1]);
}
cout<<a[0][0];
return 0;
}