数字金字塔

在这里插入图片描述
题解:

#include<iostream>
#include<cstring>
using namespace std;
int max(int a,int b)
{
    return a>b?a:b;
}
int s[1001][1001]={0};
int dp[1001][1001];
int n;
int dfs(int cr,int d)
{
    if(dp[d][cr]>-1) return dp[d][cr];
    if(d==n){return dp[d][cr]=s[d][cr];}
    else
    {
       return dp[d][cr]=s[d][cr]+max(dfs(cr,d+1),dfs(cr+1,d+1));
    }    
}
int main()
{
    cin>>n;
    memset(dp,-1,sizeof(dp));
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=i;j++)
        cin>>s[i][j];
    }
    cout<<dfs(1,1);
    return 0;
}

posted @ 2022-06-06 20:35  lishangli  阅读(78)  评论(0)    收藏  举报