AcWing 898. 数字三角形
原题链接
简单
作者:
赜
,
2024-04-12 14:56:31
,
所有人可见
,
阅读 1
#include<iostream>
#include<algorithm>
using namespace std;
const int N=510;
int num[N][N];
int dp[N][N];
int main()
{
int n,mmax=-1000000000;
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
cin>>num[i][j];
dp[1][1]=num[1][1];
for(int i=2;i<=n;i++)
for(int j=i;j>=1;j--)
{
if(j==1)
dp[i][j]=dp[i-1][j]+num[i][j];
else if(j==i)
dp[i][j]=dp[i-1][j-1]+num[i][j];
else
dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+num[i][j];
}
for(int i=1;i<=n;i++)
{
mmax=max(mmax,dp[n][i]);
}
cout<<mmax<<endl;
return 0;
}