不理解啊
查看原帖
不理解啊
294026
Kafka1楼主2023/2/17 21:54

呜呜呜,华丽的暴力搜索怎么比不过题解的四层循环呢,求大佬解释一下

int n, m;
int ti, tj;
long long res;

long long dfs(vector<vector<long long>> f, vector<vector<bool>> flag, int i, int j, int depth) {
    if (i > n - 1 || i < 0 || j < 0 || j > m - 1 || flag[i][j]) return res;
    flag[i][j] = true;
    if (depth == 0) {
        ti = i;
        tj = j;
    } else {
        if (f[i][j] == f[ti][tj])
            res = max(res, (long long) (pow((i - ti), 2) + pow((j - tj), 2)));
    }
    dfs(f, flag, i + 1, j, depth + 1);
    dfs(f, flag, i, j + 1, depth + 1);
    dfs(f, flag, i - 1, j, depth + 1);
    dfs(f, flag, i, j - 1, depth + 1);
    return res;
}

int main() {
    cin >> n >> m;
    vector<vector<long long> > f(n, vector<long long>(m));
    for (int i = 0; i < n; i++) {
        for (int j = 0, x; j < m; j++) {
            cin >> f[i][j];
        }
    }

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            vector<vector<bool>> flag(n, vector<bool>(m));
            res = LLONG_MIN;
            cout << dfs(f, flag, i, j, 0) << " ";
        }
        cout << endl;
    }
    return 0;
}
2023/2/17 21:54
加载中...