刷个水题还给刷砸了。。因为有些位置到不了,所以必须清最小值。。。
#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(){
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;
}