动态规划之数字三角形

代码:

#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
****************************************************/

猜你喜欢

转载自blog.csdn.net/qq_42825221/article/details/81988029