求助!!!
查看原帖
求助!!!
741732
small_Dongpo楼主2024/3/14 22:02

0pts求助,悬关

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;

typedef long long l;
l dp[55][55][55][55], a[55][55], n, m, num;

l f(l x1, l y1, l x2, l y2) {
    if (x1 < 1 || x2 < 1 || y1 < 1 || y2 < 1 || x1 > n || x2 > n || y1 > m || y2 > m || y2 < y1) return 0;
    if (dp[x1][y1][x2][y2] > 0) return dp[x1][y1][x2][y2];
    dp[x1][y1][x2][y2] = max({f(x1 - 1, y1, x2 - 1, y2), f(x1 - 1, y1, x2, y2 - 1), f(x1, y1 - 1, x2 - 1, y2), f(x1, y1 - 1, x2, y2 - 1)}) + a[x1][y1] + a[x2][y2];
    return dp[x1][y1][x2][y2];
}

int main() {
    memset(dp, 0, sizeof(dp));
    scanf("%lld%lld", &n, &m);
    for (l i = 1; i <= n; ++i) {
        for (l j = 1; j <= m; ++j) {
            scanf("%lld", &a[i][j]);
        }
    }
    printf("%lld", f(m - 1, n, m, n - 1));
    return 0;
}
2024/3/14 22:02
加载中...