30分求调
查看原帖
30分求调
964822
protractor半圆仪楼主2023/8/31 17:44
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int a[1005][1005];
long long dp1[1005][1005];
long long dp2[1005][1005];
long long ans[1005][1005];
int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=m;i++) dp1[0][i]=dp2[n+1][i]=-2147483647ll*2147483647;
    for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j];
    for(int j=1;j<=m;j++)
    {
        for(int i=1;i<=n;i++) dp1[i][j]=max(dp1[i-1][j],ans[i][j-1])+a[i][j];
        for(int i=n;i>=1;i--) dp2[i][j]=max(dp2[i+1][j],ans[i][j-1])+a[i][j];
        for(int i=1;i<=n;i++) ans[i][j]=max(dp1[i][j],dp2[i][j]);
    }
    /*for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++) cout<<'{'<<dp1[i][j]<<','<<dp2[i][j]<<','<<ans[i][j]<<'}'<<' ';
        cout<<endl;
    }*/
    cout<<ans[n][m];
    return 0;
}

打注释的是调试用的

2023/8/31 17:44
加载中...