AcWing 898. 数字三角形
原题链接
简单
作者:
术
,
2021-03-03 12:49:47
,
所有人可见
,
阅读 192
#include <iostream>
#include <string.h>
using namespace std;
int n;
const int N=505;
int a[N][N];
int f[N][N];
const int INF=1e9;
int main()
{
cin>>n;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=i; j++)
{
cin>>a[i][j];
}
}
for(int i=0; i<=n+1; i++)//从0到n+1开始初始化,处理边界
for(int j=0; j<=i+1; j++)
f[i][j]=-INF;
int res=-INF;
f[1][1]=a[1][1];
for(int i=2; i<=n; i++)
{
for(int j=1; j<=i; j++)
f[i][j]=max(f[i-1][j-1]+a[i][j],f[i-1][j]+a[i][j]);
}
for(int i=1;i<=n;i++)
res=max(res,f[n][i]);
cout<<res;
return 0;
}