BFS20分求调整
  • 板块P1256 显示图像
  • 楼主459zyt
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/23 18:28
  • 上次更新2024/11/23 20:56:14
查看原帖
BFS20分求调整
759077
459zyt楼主2024/11/23 18:28
#include <stdio.h>
#include <string.h>
typedef struct {
    int x,y;
}place;
place queue[10000];
int visited[10000][10000];
int dis[10000][10000];
int rear=0,front=0;
int dx[4]={0,0,1,-1};
int dy[4]={-1,1,0,0};
int n,m;
void bfs(){
    for(front=0;front<=rear;front++){
        int curx=queue[front].x;
        int cury=queue[front].y;
        for(int d=0;d<4;d++){
            int newdx=curx+dx[d];
            int newdy=cury+dy[d];
            if(newdx>=0&&newdx<n&&newdy>=0&&newdy<m&&visited[newdx][newdy]==0){
                dis[newdx][newdy]=dis[curx][cury]+1;
                visited[newdx][newdy]=1;
                queue[rear].x=newdx;
                queue[rear++].y=newdy;
            }
        }
    }
}
int main(){
    scanf("%d %d",&n,&m);
    for(int i=0;i<n;i++){
        char str[100];
        scanf("%s",str);
        for(int k=0;k<m;k++){
            if(str[k]=='1'){
                visited[i][k]=1;
                queue[rear].x=i;
                queue[rear++].y=k;
            }//访问过
        }
    }
    bfs();
        for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        printf("%d ",dis[i][j]);
        printf("\n");
    }
}


为什么会报段错误?

2024/11/23 18:28
加载中...