#1、#2 AC,其余WA 求调!
  • 板块P1162 填涂颜色
  • 楼主CppCpp
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/8/25 15:52
  • 上次更新2024/8/25 18:53:59
查看原帖
#1、#2 AC,其余WA 求调!
1431719
CppCpp楼主2024/8/25 15:52

代码如下:

#include <iostream>
#include <vector>
using namespace std;
typedef vector<int> vec_int32_t;
void print_color(vector<vec_int32_t>& vec, int i, int j, int old_num, int new_num){
    int n = vec.size(), m = vec.at(0).size();
    if (vec[i][j] != old_num) return ;
        vec[i][j] = new_num;
    if (i - 1 >= 0 && vec[i - 1][j] == old_num) print_color(vec, i - 1, j, old_num, new_num);
    if (i + 1 < n && vec[i + 1][j] == old_num) print_color(vec, i + 1, j, old_num, new_num);
    if (j - 1 >= 0 && vec[i][j - 1] == old_num) print_color(vec, i, j - 1, old_num, new_num);
    if (j + 1 < m && vec[i][j + 1] == old_num) print_color(vec, i, j + 1, old_num, new_num);
    return ;
}
int main(){
    int n;
    cin >> n;
    vector<vec_int32_t> vec(n, vec_int32_t(n));
    for (auto& i : vec)
        for (int& j : i) cin >> j;
    for (int i=0;i<n;i++)
        for (int j=0;j<n;j++)
            if (vec[i][j] == 0 && 
              ((i == 0 || i == n - 1) || 
               (j == 0 || j == n - 1))){
                print_color(vec, i, j, 0, -1);
            }else if (vec[i][j] == 0)
                print_color(vec, i, j, 0, 2);
    for (int i=0;i<n;i++)
        for (int j=0;j<n;j++)
            if (vec[i][j] == -1) print_color(vec, i, j, -1, 0);
    for (auto& i : vec){
            for (int& j : i) cout << j << " ";
        cout << endl;
    }
    return 0;
}
2024/8/25 15:52
加载中...