1796 数字金字塔
#include<bits/stdc++.h>
using namespace std;
long long a[1001][1001];
int n;
int main(){
cin>>n;
long long ans = -1;//记录最大结果
//开始递推每一个位置的最大值
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cin>>a[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]);
}
ans = max(ans,a[i][j]);
}
}
cout<<ans; // 输出结果
return 0;
}

浙公网安备 33010602011771号