9 solutions

  • 0
    @ 2025-3-24 16:04:41
    #include<iostream>
    #include<cmath>
    #include<algorithm>
    #include<queue>
    using namespace std;
    using ll = long long;
    const int N = 1e3+10;
    ll a[N][N],sum;
    int main()
    {
        ll sum = 0;
       int r;cin>>r;
       for(int i = 1;i <= r;i++)
       {
            for(int j = 1;j <= i;j++)
            {
                cin>>a[i][j];
            }
       }
    
       for(int i = 2;i <= r;i++)
       {
            for(int j = 1;j <= i;j++)
            {
                //一定要注意考虑边界值
                if(j == 1)
                {
                    a[i][j] += a[i-1][j];
                }
                else if(j == i)
                {
                    a[i][j] += a[i-1][j-1];
                }
                else 
                {
                    a[i][j] += max(a[i-1][j],a[i-1][j-1]);
                }
            }
            
       }
       for(int j = 1; j <= r;j++)
       {
            sum = max(sum,a[r][j]);
       }
       cout<<sum<<"\n";
        return 0; 
    }
    
    

    Information

    ID
    87
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    # Submissions
    247
    Accepted
    98
    Uploaded By