首页 > 代码库 > 迷宫bfs

迷宫bfs

#include<stdio.h>
int map[5][5]={0,1,0,0,0,
			   0,1,0,1,0,
			   0,0,0,0,0,
			   0,1,1,1,0,
			   0,0,0,1,0};
int mx[4]={0,0,1,-1};
int my[4]={1,-1,0,0};
int q;
typedef struct node
{
	int x;
	int y;
	int step;
	int pre;
}node;
node dui[100];
int tou=0;
int wei=1;
void bfs()
{
	int nx;
	int ny;
	dui[tou].x=0;
	dui[tou].y=0;
	dui[tou].step=1;
	dui[tou].pre =-1;	
	while(tou<wei)
	{  if(dui[tou].x ==4&&dui[tou].y==4)
		{
			q=tou;
			printf("%d\n",dui[tou].step);
			break;
		}
		
		for(int i=0;i<4;i++)
		{
			nx=dui[tou].x +mx[i];
			ny=dui[tou].y +my[i];
			if(nx>=0&&nx<5&&ny>=0&&ny<5&&map[nx][ny]==0)
			{
				dui[wei].x =nx;
				dui[wei].y =ny;
				dui[wei].step =dui[tou].step +1;
				map[nx][ny]=1;
				dui[wei].pre =tou;
				wei++;
				
			}
		}
	tou++;	
	}

}
void prin(int i)
{
	if(i==-1)
		return;
	prin(dui[i].pre );
	printf("(%d,%d)\n",dui[i].x ,dui[i].y );
}
int main()
{	bfs();
	prin(q);
	return 0;
}

 

迷宫bfs