哪儿不对???
查看原帖
哪儿不对???
602632
_7Mr楼主2023/4/19 20:21
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 85;

int n, m;
int w[N][N];
int f[N][N][N][N];

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

    for (int len = 1; len <= m; len ++ )
        for (int i = 1; i + len - 1 <= m; i ++ )
        {
            int j = i + len - 1;
            for (int x1 = 1; x1 <= n; x1 ++ )
                for (int x2 = 1; x2 <= n; x2 ++ )
                {
                    int y1 = len - x1 + 1, y2 = len - x2 + 1;
                    if (y1 < 1 || y2 < 1 || y1 > m || y2 > m) continue;

                    int &v = f[i][j][x1][x2];
                    v = max(v, f[i+1][j][x1][x2] + w[x1][i] + w[x2][j]);
                    v = max(v, f[i][j-1][x1][x2] + w[x1][j] + w[x2][i]);
                    if (len == 1) continue;
                    v = max(v, f[i+1][j-1][x1][x2] + w[x1][i] + w[x1][j] + w[x2][i] + w[x2][j]);
                    for (int k1 = 1; k1 < x1; k1 ++ )
                        for (int k2 = 1; k2 < x2; k2 ++ )
                        {
                            v = max(v, f[i][j][k1][k2] + f[i+1][j-1][x1-k1][x2-k2] + w[k1][i] + w[k1][j] + w[k2][i] + w[k2][j]);
                        }
                }
        }
    cout << f[1][m][n][n] << endl;
    return 0;
}

2023/4/19 20:21
加载中...