P1162 填涂颜色帮帮忙
  • 板块题目总版
  • 楼主CCF_xiaokeai
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/4/24 18:13
  • 上次更新2024/4/24 20:44:21
查看原帖
P1162 填涂颜色帮帮忙
766912
CCF_xiaokeai楼主2024/4/24 18:13

P1162 填涂颜色 68

#include <bits/stdc++.h>
using namespace std;
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};
void dfs(vector<vector<int>>& matrix, int x, int y) {
    int n = matrix.size();
    int m = matrix.size();
    matrix[x][y] = 2;
    for (int i = 0; i < 4; i++) {
        int nx = x + dx[i];
        int ny = y + dy[i];
        if (nx >= 0 && nx < n && ny >= 0 && ny < m && matrix[nx][ny] == 0) {
            dfs(matrix, nx, ny);
        }
    }
}
void bfs(vector<vector<int>>& matrix, int x, int y) {
    int n = matrix.size();
    int m = matrix.size();
    queue<pair<int, int>> q;
    q.push({x, y});
    matrix[x][y] = 2;
    while (!q.empty()) {
        int cx = q.front().first;
        int cy = q.front().second;
        q.pop();
        for (int i = 0; i < 4; i++) {
            int nx = cx + dx[i];
            int ny = cy + dy[i];
            if (nx >= 0 && nx < n && ny >= 0 && ny < m && matrix[nx][ny] == 0) {
                matrix[nx][ny] = 2;
                q.push({nx, ny});
            }
        }
    }
}
int main() {
    int n;
    cin >> n;
    vector<vector<int>> matrix(n, vector<int>(n));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> matrix[i][j];
        }
    }
    int start_x, start_y;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (matrix[i][j] == 0) {
                start_x = i;
                start_y = j;
                break;
            }
        }
    }
    dfs(matrix, start_x, start_y);
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cout << matrix[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

帮帮忙

2024/4/24 18:13
加载中...