// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P1004
// Memory Limit: 512 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)
// clang-format off
#include <bits/stdc++.h>
long long a[55][55], dp[55][55][55][55];
int main(int n) {
int m;
scanf("%d%d",&m,&n);
for (int i = 1; i <= m; ++i) {
for (int j = 1; j <= n; ++j) {
std::cin >> a[i][j];
}
}
for (int i = 1; i <= m; ++i) {
for (int j = 1; j <= n; ++j) {
for (int k = 1; k <= m; ++k) {
for (int l = 1; l <= n; ++l) {
dp[i][j][k][l] = std::max({dp[i - 1][j][k - 1][l], dp[i - 1][j][k][l - 1], dp[i][j - 1][k - 1][l], dp[i][j - 1][k][l - 1]}) + a[i][j] + a[k][l] * (i != k && l != j);
}
}
}
}
printf("%lld\n",dp[n][n][n][n]);
return 0;
}
60pts, WA on #4 #6 #8 #9。
注:这事实上是从我的方格取数那题搬过来的代码,改了下输入。