广度优先搜索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;

}