刷个水题还给刷砸了。。因为有些位置到不了,所以必须清最小值。。。
#include <cstdio>
#include <cstring>
#define N 105
int a[N][N],dp[N][N],r,c;
inline int max(int x,int y){return x>y?x:y;}
int main(){
// freopen("a.in","r",stdin);
scanf("%d%d",&r,&c);
for(int i=1;i<=r;++i)
for(int j=1;j<=c;++j)
scanf("%d",&a[i][j]);
memset(dp,128,sizeof(dp));
dp[1][1]=a[1][1];
for(int i=2;i<=c;++i)
for(int j=1;j<=r;++j)
dp[j][i]=max(dp[j-1][i-1],max(dp[j][i-1],dp[j+1][i-1]))+a[j][i];
printf("%d\n",dp[r][c]);
return 0;
}