广度优先搜索C语言算法
它通常用于计算路径的最短距离和最佳路径。
比如迷宫最短路径的计算、移动箱子的最小步数等小游戏,都是通过广度搜索进行的。
这个算法是教程里的经典,有很多例子和代码。可以研究一下!
以下是迷宫的最佳路径求解算法。
#包括
const int dx[4]={-1,0,1,0 };
const int dy[4]={0,1,0,-1 };
int maze[5][5],prev[5][5];
int que[32];
int qn
无效打印(int x,int y)
{
if(prev[x][y]!=-2)
{
print(prev[x][y]& gt;& gt3,prev[x][y]& amp;7);
}
printf("(%d,%d)\n ",x,y);
}
int main()
{
int i,j,cx,cy,nx,ny;
for(I = 0;我& lt5;i++)
{
for(j = 0;j & lt5;j++)
{
scanf("%d ",& ampmaze[I][j]);
}
}
memset(prev,-1,sizeof(prev));
prev[0][0]=-2;
que[0]= 0;
qn = 1;
for(I = 0;我& ltqn;i++)
{
CX = que[I]& gt;& gt3;
cy = que[I]& amp;7;
for(j = 0;j & lt4;j++)
{
NX = CX+dx[j];
ny = cy+dy[j];
如果((nx & gt= 0)& amp;& amp(NX = 0)amp;& amp(ny & lt5)& amp;& amp(迷宫[NX][ny]= = 0)& amp;& amp(prev[nx][ny]==-1))
{
prev[NX][ny]=(CX & lt;& lt3)| cy;
que[qn++]=(NX & lt;& lt3)| ny;
if((NX = = 4)& amp;& amp(ny==4))
{
打印(纽约NX);
返回0;
}
}
}
}
返回0;
}