社区讨论

0分MLE WA 求大佬更改!!!!!!!!!!!!!!

P1162填涂颜色参与者 2已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@mhj2t4ae
此快照首次捕获于
2025/11/03 19:48
4 个月前
此快照最后确认于
2025/11/03 19:48
4 个月前
查看原帖
CPP
#include <iostream>
using namespace std;
int n;
int a[100][100],b[100][100];
bool w;
int d[4]={0,0,1,-1};
int e[4]={1,-1,0,0};
void dfs1(int x,int y){
    if (x<0||x>=n||y<0||y>=n){
        return;
    }
    if (a[x][y]==1){
        return;
    }
    b[x][y]=3;
    for (int k=0;k<4;k++){
        int qx=x+d[k];
        int qy=y+e[k];
        dfs1(qx,qy);
    }
}
void dfs2(int x,int y){
    if (x<0||x>=n||y<0||y>=n){
        return;
    }
    if (a[x][y]==1){
        return;
    }
    if (b[x][y]==3){
        return;
    }
    a[x][y]=2;
    for (int k=0;k<4;k++){
        int qx=x+d[k];
        int qy=y+e[k];
        dfs2(qx,qy);
    }
}
int main(){
    cin>>n;
    for (int i=0;i<n;i++){
        for (int j=0;j<n;j++){
            cin>>a[i][j];
        }
    }
    for (int i=0;i<n;i++){
        for (int j=0;j<n;j++){
            if ((i<=0||j<=0||i==n-1||j==n-1)&&a[i][j]==0){
                b[i][j]=3;
            }
        }
    }
    for (int i=0;i<n;i++){
        for (int j=0;j<n;j++){
            if (b[i][j]==3){
                dfs1(i,j);
            }
        }
    }
    for (int i=0;i<n;i++){
        for (int j=0;j<n;j++){
            if (a[i][j]==3){
                dfs2(i,j);
            }
        }
    }
    for (int i=0;i<n;i++){
        for (int j=0;j<n;j++){
            cout<<a[i][j]<<' ';
        }
        cout<<endl;
    }
    return 0;
}

回复

7 条回复,欢迎继续交流。

正在加载回复...