编辑代码

#include <iostream>
#include <string.h>
#include <algorithm>
#define ll long long
using namespace std;

int a[80][80];
ll dp[80][80], ans=0, t;
int x;

ll dfs(int i ,int j, int step) {
    if (dp[i][j] >= 0) return dp[i][j];
    t = -1;
    if (i + 1 <= j) {
        t = max(dfs(i+1, j, step+1)*2+a[x][i]*2,dfs(i, j-1, step+1)*2+a[x][j]*2);
    }
    if (i == j) {
        t = a[x][i]*2;
    }
    dp[i][j] = t;
    return dp[i][j];
}

int main() {
    int n,m;
    cin >> n >> m;
    for (int i = 1;i <= n;i++){
        for (int j = 1;j <= m;j++) {
            cin >> a[i][j];
        }
    }
    for (x = 1;x <= n;x++) {
        memset(dp,-1,sizeof(dp));
        ans += dfs(1, m, 0);
    }
    cout << ans;
    return 0;
}