解题思路:
简单的动态规划题,思路就是从下往上遍历数组,从倒数第二行开始更新数组的值,每次取最大的和,最后输出a[0][0] 即可
#include <stdio.h>
#include <iostream>
int max(int a,int b){
if(a>b)return a;
else return b;
}
using namespace std;
int a[105][105];
int main(){
int n;
cin>>n;
int i,j;
for(i=0;i<n;i++){
for(j=0;j<=i;j++){
cin>>a[i][j];
}
}
for(i=n-2;i>=0;i--){
for(j=0;j<i+1;j++){
a[i][j]=a[i][j]+max(a[i+1][j],a[i+1][j+1]);
}
}
cout<<a[0][0]<<endl;
}