简单
2025-07-16 10:55:45
发布于:北京
0阅读
0回复
0点赞
温馨提示:为防止复制粘贴,本人在题解中留了几个s都能看出来的s错误,请各位慎重!
#include <iostream>
#include <algorithm>
using namespace std;
int grid[55][55];
int dp[55][55][55][55];
int main() {
int m, n;
cin >> m;
for(int i = 1; i <= m; i++) {
for(int j = 1; j <= n; j++) {
cin >> grid[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++) {
if(i == k && j == l) continue;
dp[i][j][k][l] = 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]
}) + grid[i][j] + grid[k][l];
}
}
}
}
cout << dp[m][n-1][m-1][n] << endl;
return 0;
这里空空如也
有帮助,赞一个