#include<iostream>
#include<cstring>
using namespace std;
const int N=510,INF=0x3f3f3f3f;
int f[N][N];
int a[N][N];
int n;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++) scanf("%d",&a[i][j]);
memset(f,-INF,sizeof f);
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]);
}
int res=-INF;
for(int i=1;i<=n;i++) res=max(res,f[n][i]);
printf("%d",res);
}
动态规划求解数字三角形问题(c++实现)
最新推荐文章于 2024-06-01 18:28:10 发布