0
已解决
熊潇然
初级启示者
初级启示者
题目链接: 酷町堂:4952
咋做呀!!!
样例都没过……
#include<bits/stdc++.h>
using namespace std;
int n,m,ans=-0x3f3f3f3f;
int f[205][205],a[205][205];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
f[n][m/2+1]=a[n][m/2+1];
for(int j=m/2;j>=1;j--){
f[n][j]=f[n][j+1]+a[n][j];
}
for(int j=m/2+2;j<=m;j++){
f[n][j]=f[n][j-1]+a[n][j];
}
for(int i=n-1;i>=1;i--){
for(int j=1;j<=m;j++){
if(j==1){
f[i][j]=max(f[i+1][j],f[i+1][j+1])+a[i][j];
}else if(j==m){
f[i][j]=max(f[i+1][j],f[i+1][j-1])+a[i][j];
}else{
f[i][j]=max(f[i+1][j],max(f[i+1][j+1],f[i+1][j-1]))+a[i][j];
}
}
}
for(int j=1;j<=m;j++){
ans=max(ans,f[1][j]);
}
cout<<ans;
return 0;
}