TLE 66pts超时求调
查看原帖
TLE 66pts超时求调
682780
ykc1146187241楼主2023/11/25 13:26
//
// Created by lenovo on 2023/11/25.
//
#include<bits/stdc++.h>

using namespace std;
int a[15][15] = {};
int b[15][15] = {};
int res = 0;
int maxinum = 0;
int xin;
int yin;

int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> xin >> yin;
        for (int j = 1; j <= 14; j++) {
            for (int k = 1; k <= 14; k++) {
                a[j][k] = 0;
            }
        }
        for (int j = 1; j <= 14; j++) {
            for (int k = 1; k <= 14; k++) {
                b[j][k] = 0;
            }
        }
        for (int j = 1; j <= xin; j++) {
            for (int k = 1; k <= yin; k++) {
                cin >> a[j][k];
            }
        }
        void DFS(int x, int y);
        maxinum = 0;

        for (int j = 1; j <= xin; j++) {
            for (int k = 1; k <= yin; k++) {
//                cout<<i<<j<<endl;
                res = 0;
                b[j - 1][k - 1] += 1;
                b[j - 1][k] += 1;
                b[j - 1][k + 1] += 1;
                b[j][k - 1] += 1;
                b[j][k] += 1;
                b[j][k + 1] += 1;
                b[j + 1][k - 1] += 1;
                b[j + 1][k] += 1;
                b[j + 1][k + 1] += 1;
                res += a[j][k];
                DFS(j, k);
                if (maxinum < res) {
                    maxinum = res;
                }
                res -= a[j][k];
                b[j - 1][k - 1] -= 1;
                b[j - 1][k] -= 1;
                b[j - 1][k + 1] -= 1;
                b[j][k - 1] -= 1;
                b[j][k + 1] -= 1;
                b[j + 1][k - 1] -= 1;
                b[j + 1][k] -= 1;
                b[j + 1][k + 1] -= 1;

            }
        }
        cout << maxinum << endl;
    }
}

void DFS(int x, int y) {
//    for(int j=max(x-5,1);j<=min(x+5,xin);j++) {
//        for (int k = max(y-5,1); k <= min(y+5,yin); k++) {
    for (int j = 1; j <= xin; j++) {
        for (int k = 1; k <= yin; k++) {
            if (!b[j][k]) {
//                cout<<j<<k<<endl;
                b[j - 1][k - 1] += 1;
                b[j - 1][k] += 1;
                b[j - 1][k + 1] += 1;
                b[j][k - 1] += 1;
                b[j][k] += 1;
                b[j][k + 1] += 1;
                b[j + 1][k - 1] += 1;
                b[j + 1][k] += 1;
                b[j + 1][k + 1] += 1;
                res += a[j][k];
                DFS(x, y);
                if (maxinum < res) {
                    maxinum = res;
                }
                res -= a[j][k];
                b[j - 1][k - 1] -= 1;
                b[j - 1][k] -= 1;
                b[j - 1][k + 1] -= 1;
                b[j][k - 1] -= 1;
                b[j][k] -= 1;
                b[j][k + 1] -= 1;
                b[j + 1][k - 1] -= 1;
                b[j + 1][k] -= 1;
                b[j + 1][k + 1] -= 1;

            }
        }
    }
    return;
}
2023/11/25 13:26
加载中...