为啥没输出???

P1162 填涂颜色

doudou0617 @ 2023-07-15 17:35:30

#include<bits/stdc++.h>
using namespace std;
int x[4]={1,-1,0,0};
int y[4]={0,0,-1,1}; 
int n,a[100][100];
void bfs(int r,int m){
    if(r<0||r>=n||m<0||m>=n||a[r][m]==1){
        return;
    }
    a[r][m]=0;
    for(int i=0;i<4;i++){
        bfs(r+x[i],m+y[i]);
    }
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cin>>a[i][j];
            if(a[i][j]!=1){
                a[i][j]=2;
            }
        }
    }
    bfs(0,0);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cout<<a[i][j]<<" ";
        }
        cout<<endl; 
    }
}

by wangjiawen @ 2023-07-15 17:47:13

#include<bits/stdc++.h>
using namespace std;
int x[4]={1,-1,0,0};
int y[4]={0,0,-1,1}; 
int n,a[100][100];
void bfs(int r,int m){
    if(r<0||r>=n||m<0||m>=n||a[r][m]==1){
        return;
    }
    a[r][m]=1;//这里
    for(int i=0;i<4;i++){
        bfs(r+x[i],m+y[i]);
    }
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cin>>a[i][j];
            if(a[i][j]!=1){
                a[i][j]=2;
            }
        }
    }
    bfs(0,0);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cout<<a[i][j]<<" ";
        }
        cout<<endl; 
    }
}

有输出了,但错的有点离谱


by doudou0617 @ 2023-07-15 17:53:25

@wangjiawen 这样的话样例输出变成 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 2 1 1 1 2 2 2 1 1 2 2 2 2 1 1 1 1 1 1 1 不对啊


by doudou0617 @ 2023-07-15 17:55:26

就是不被包围的0也都变成1了


by wangjiawen @ 2023-07-15 20:47:04

我也写了,输出错的离谱。最主要的原因是我也没过qwq。


|