#include<iostream>
#include<cmath>
#define INT_MIN -999999999
using namespace std;
int main()
{
int m,n,a[201][201],dp[201][201],temp;
cin>>m>>n;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
for(int j=1;j<=n;j++)
dp[m][j]=INT_MIN;
for(int j=n/2;j<=n/2+2;j++)
dp[m][j]=a[m][j];
for(int i=m;i>=1;i--)
{
for(int j=1;j<=n;j++)
{
if(j==1)
temp=max(dp[i][j],dp[i][j+1]);
else if(j==n)
temp=max(dp[i][j],dp[i][j-1]);
else
temp=max(dp[i][j],max(dp[i][j-1],dp[i][j+1]));
if(temp==INT_MIN)
dp[i-1][j]=temp;
else
dp[i-1][j]=temp + a[i-1][j];
}
}
int MAX=INT_MIN;
for(int j=1;j<=n;j++)
{
MAX=max(MAX,dp[1][j]);
}
cout<<MAX;
return 0;
}
注意:在计算机语言当中,定义无穷小的时候,无穷小-正整数就回到了另外一端,也就是说数字是一个圆圈,假如int的最小值是-2147483648,然后-2等于2147483646而不是-2147483648