有没有大佬帮我看看代码有没有大问题

P1162 填涂颜色

better_Z @ 2023-05-15 21:51:55

#include<iostream>

#include<cstring>

#include<queue>

#include<cstdio>

#define maxn 33

using namespace std;

int a[maxn][maxn];

int py[4][2]={{1,0},{0,1},{-1,0},{0,-1}};

bool fh=true;

struct crood{

    int x,y;

};

int main(){

    int n,sx,sy;

    cin>>n;

    memset(a,1,sizeof(a));

    for(int i=1;i<=n;i++){

        for(int j=1;j<=n;j++){

            cin>>a[i][j];

        }

    }

    for(int i=1;i<=n&&fh==true;i++){

        for(int j=1;j<=n&&fh==true;j++){

            if(a[i][j]==1&&a[i][j+1]==0){

                sx=i,sy=j;

                fh=false;//找到目标值停止循环

            }

        }

    }

    queue<crood> Q;

    crood u={sx,sy};

    Q.push(u);

    while(!Q.empty()){

        crood u=Q.front();

        int dx=u.x,dy=u.y;

        Q.pop();

        for(int i=1;i<=4;i++){

            int fx=dx+py[i][0],fy=dy+py[i][1];

            if(fx<1||fx>n||fy<1||fy>n||a[fx][fy]!=0)continue;

            a[fx][fy]=2;

            crood f={fx,fy};

            Q.push(f);

        }

    }

        for(int i=1;i<=n;i++){

            for(int j=1;j<=n;j++){

                printf("%-5d",a[i][j]);

            }

            puts("");

        }

    return 0;

}

by lxuyinc @ 2023-05-15 22:38:29

 for(int i=1;i<=4;i++){
    ...

        }

应该是从0开始循环,因为您定义时:

int py[4][2]={{1,0},{0,1},{-1,0},{0,-1}};

|