#include <iostream> #include<algorithm> using namespace std; int s; int ans;//最后的距离 int a[10000][10000]; int dp[10000][10000]; int main() { cin>>s; for(int i=0;i<s;i++) { for(int j=0;j<=i;j++) //此处为一个下三角形 规定此时的下三角只能向下走或者沿着对角线走 这就是两个边界 { cin>>a[i][j]; } } for(int i=0;i<s;i++) { for(int j=0;j<=i;j++) { dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+a[i][j]; //前者为向下走 后者为沿着对角线走 a[i][j]为这一步的大小 ans=max(ans,dp[i][j]); // dp[i][j]为比较下来最大的,是每一步与前一步的累加和 } } cout<<ans<<endl; return 0; }