#include<bits/stdc++.h>
using namespace std;
const int INF=1e9;
int f[510][510],n,a[510][510];
int main(){
cin>>n;
for(int i=0;i<=n;i++){
for(int j=0;j<=n;j++){
f[i][j]=-INF;}}//定义边界
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cin>>a[i][j];}}
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],f[i-1][j])+a[i][j];}}//每一个数都是由上面的两个过来的
int res=-INF;
for(int i=1;i<=n;i++){
res=max(res,f[n][i]);}
cout<<res<<endl;
return 0;
}
数字三角形【每日一题】
最新推荐文章于 2024-07-12 18:56:03 发布