QWQ大佬们到底是哪里出了问题,我bfs的那个if循环进不去(悲
查看原帖
QWQ大佬们到底是哪里出了问题,我bfs的那个if循环进不去(悲
575285
HDU_21041408楼主2021/10/19 12:22
#include<stdio.h>
int qipan[401][401];
int dx[8]={2,2,1,-1,-2,-2,1,-1};
int dy[8]={1,-1,2,2,1,-1,-2,-2};
struct queue
{
   int x,y;
}a[160000];

void bfs(int i,int j)
{
	int head=1,tail=2;
	int c,nx,ny;
	a[2].x =i;
	a[2].y =j;
	qipan[i][j]=0;
	while(head<tail){
		head++;
		for(c=0;c<8;c++){
			nx=a[head].x +dx[c];
			ny=a[head].y +dy[c];
			printf("%d %d\n",nx,ny);
			if(nx>=1 && nx<=i && (qipan[nx][ny]==-1) && ny>=1 &&ny<=j){
				tail++;
				qipan[nx][ny]=qipan[head][head]+1;
				a[tail].x =nx;
				a[tail].y =ny;
			} 
		}
	}
}
	
int main(void)
{
	int m,n,x,y;
	scanf("%d %d %d %d",&n,&m,&x,&y);
	int a,b;
	for(a=1;a<=n;a++){
		for(b=1;b<=m;b++){
			qipan[a][b]=-1;
		}
	}
	bfs(x,y);
	for(a=1;a<=n;a++){
		for(b=1;b<=m;b++){
			printf("%-5d",qipan[a][b]);
		}
		printf("\n");
	}
	return 0;
}
2021/10/19 12:22
加载中...