代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n;
int a[105][105];
int max(int x,int y)
{
return x>y?x:y;
}
int amaxsum[105][105];
int maxsum(int r,int j)
{
if(n==r) return a[r][j];
if(amaxsum[r+1][j]==-1) amaxsum[r+1][j]=maxsum(r+1,j);
if(amaxsum[r+1][j+1]==-1) amaxsum[r+1][j+1]=maxsum(r+1,j+1);
return max(amaxsum[r+1][j],amaxsum[r+1][j+1])+a[r][j];
}
int main()
{
scanf("%d",&n);
memset(amaxsum,-1,sizeof(amaxsum));
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
cin>>a[i][j];
int sum=0;
cout<<maxsum(1,1)<<endl;
return 0;
}
/***************************************************
User name: zhongshanyezhe
Result: Accepted
Take time: 0ms
Take Memory: 240KB
Submit time: 2018-08-07 20:22:58
****************************************************/