坑了,写程序的时候倒数第二个花括号把return 0;给我括起来了,程序一次就结束了,吃了饭回来才顿悟了
#include<stdio.h>
struct point
{
int hang,lie;
int predecessor;
}queue[402],p,visit_point;
char brr[30][30],c;
int head=0,tail=0,n,m;
void enqueue(struct point p)
{
queue[tail++] = p;
}
struct point dequeue(void)
{
return queue[head++];
}
void visit(int hang, int lie)
{
visit_point.hang=hang;visit_point.lie=lie;visit_point.predecessor=head-1;
brr[hang][lie] = '#';
enqueue(visit_point);
}
int main()
{
int i,j;
while(1)
{
scanf("%d%d",&n,&m);
if(m==0&&n==0)
break;
scanf("%c",&c);
for(i=0;i<m;i++)
for(j=0;j<=n;j++)
{
scanf("%c",&brr[i][j]);
if(brr[i][j]=='@')
{
p.hang=i;p.lie=j;p.predecessor=1;
}
}
queue[0]=p;tail++;
while(tail!=head)
{
p = dequeue();
if (p.lie+1 < n && brr[p.hang][p.lie+1] == '.')
visit(p.hang, p.lie+1);
if (p.hang+1 < m && brr[p.hang+1][p.lie] == '.')
visit(p.hang+1, p.lie);
if (p.lie-1 >= 0 && brr[p.hang][p.lie-1] == '.')
visit(p.hang, p.lie-1);
if (p.hang-1 >= 0&& brr[p.hang-1][p.lie] == '.')
visit(p.hang-1, p.lie);
}
printf("%d\n",tail);
head=0;tail=0;
}
return 0;
}
本文介绍了一个使用队列实现的迷宫寻路算法。通过遍历迷宫地图,找到从起点到边界的所有可能路径。文章详细展示了如何利用队列进行节点的存储与访问,并在每次迭代中检查当前节点的相邻节点是否可以被访问。
532

被折叠的 条评论
为什么被折叠?



