为什么数据大的时候输不完数据就结束了
查看原帖
为什么数据大的时候输不完数据就结束了
1267057
aa2211034566楼主2024/3/3 23:39
#include<bits/stdc++.h>
using namespace std;
int t, xx[7], yy[7], data[201][201];
int sum = 0;
int xxx[8] = {-1, -1, -1, 0, 0, 1, 1, 1};
int yyy[8] = {-1, 0, 1, -1, 1, 1, 0, -1};
int vist[201][201];

void dfs(int number, int x, int y, int ct) {
    if (y == yy[number] + 1) {
        dfs(number, x + 1, 1, ct);
        return;
    }
    if (x == xx[number] + 1) {
        sum = max(ct, sum);
        return;
    }
    dfs(number, x, y + 1, ct);
    int flag = 0;
    for (int i = 0; i < 8; i++) {
        int dx = x + xxx[i];
        int dy = y + yyy[i];
        if (vist[dx][dy] == 1) {
            flag = 1;
        }
    }
    if (flag == 0) {
        vist[x][y] = 1;
        ct += data[x][y];
        dfs(number, x, y + 1, ct);
        ct -= data[x][y];
        vist[x][y] = 0;
    }
}

int main() {
    cin >> t;
    for (int i = 1; i <= t; i++) {
        cin >> xx[i] >> yy[i];
        memset(data, 0, sizeof(data));
        memset(vist, 0, sizeof(vist));
        sum = 0;
        for (int j = 1; j <= xx[i]; j++) {
            for (int k = 1; k <= yy[i]; k++) {
                cin >> data[j][k];
            }
        }
        dfs(i, 1, 1, 0);
        cout << sum << endl;

    }

    return 0;
}

2024/3/3 23:39
加载中...