关注
用dp,代码如下:
#include<bits/stdc++.h>
using namespace std;
int n,m;
long long a[1005][1005],f[1005][1005],f1[1005][1005],f2[1005][1005],f3[1005][1005];
int main(){
//freopen("number.in","r",stdin);
//freopen("number.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=0;i<=n+1;i++)
for(int j=0;j<=m+1;j++)
f[i][j]=f1[i][j]=f2[i][j]=f3[i][j]=-1e18;
for(int i=1;i<=n;i++){
long long sum=0;
for(int k=1;k<=i;k++)sum+=a[k][1];
f[i][1]=sum;
}
for(int j=2;j<=m;j++){
for(int i=1;i<=n;i++)
f1[i][j]=f[i][j-1]+a[i][j];
for(int i=2;i<=n;i++)
f2[i][j]=max(f2[i-1][j],f1[i-1][j])+a[i][j];
for(int i=n-1;i>=1;i--)
f3[i][j]=max(f1[i+1][j],f3[i+1][j])+a[i][j];
for(int i=1;i<=n;i++){
f[i][j]=max(f1[i][j],f2[i][j]);
f[i][j]=max(f[i][j],f3[i][j]);
}
}
printf("%lld",f[n][m]);
//fclose(stdin);
//fclose(stdout);
return 0;
}
查看原帖
点赞 评论
相关推荐
昨天 19:18
门头沟学院 计算机类 点赞 评论 收藏
转发
点赞 评论 收藏
转发
03-16 12:26
中国海洋大学 工商管理类 点赞 评论 收藏
转发
牛客热帖
正在热议
# 牛客帮帮团来啦!有问必答 #
377137次浏览 7559人参与
# 应届生初入职场,求建议 #
21699次浏览 535人参与
# 晒一晒我的offer #
2791849次浏览 49680人参与
# 在国企工作的人,躺平了吗? #
71244次浏览 860人参与
# 简历中的项目经历要怎么写 #
377391次浏览 6352人参与
# 非技术岗薪资爆料 #
6578次浏览 133人参与
# 你更愿意参加线上面试还是线下面试? #
6305次浏览 90人参与
# 非技术薪资爆料 #
63544次浏览 954人参与
# 华为求职进展汇总 #
437690次浏览 4406人参与
# 第一次面试 #
15373次浏览 236人参与
# 租房前辈的忠告 #
20566次浏览 1629人参与
# 应届生应该先就业还是先择业 #
11908次浏览 113人参与
# 安利/避雷我的岗位 #
121956次浏览 2752人参与
# 来聊聊机械薪资天花板是哪家 #
20347次浏览 162人参与
# 机械人怎么评价今年的华为 #
53577次浏览 439人参与
# 谈薪时HR压价该怎么应对 #
32873次浏览 202人参与
# 通信硬件薪资爆料 #
144062次浏览 1063人参与
# 毕业租房也有小确幸 #
19688次浏览 1243人参与
# 除了offer,现在你还缺点啥? #
2501次浏览 50人参与
# 数据人offer决赛圈怎么选 #
36472次浏览 658人参与