3 条题解

  • 1
    @ 2025-7-22 8:18:40

    #include<bits/stdc++.h> using namespace std; int m,n,a[55][55],dp[110][55][55];

    int main(){ cin>>m>>n; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) cin>>a[i][j];

    for(int k=2;k<=m+n;k++){
        for(int i1=1;i1<=m;i1++){
            for(int i2=1;i2<=m;i2++){
                int j1=k-i1, j2=k-i2;
                if(j1<1||j1>n||j2<1||j2>n) continue;
                
                int val=max({dp[k-1][i1][i2], dp[k-1][i1-1][i2],
                            dp[k-1][i1][i2-1], dp[k-1][i1-1][i2-1]});
                
                if(i1==i2) dp[k][i1][i2]=val+a[i1][j1];
                else dp[k][i1][i2]=val+a[i1][j1]+a[i2][j2];
            }
        }
    }
    cout<<dp[m+n][m][m];
    return 0;
    

    }

    信息

    ID
    524
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    107
    已通过
    19
    上传者