求迷宫最短路径
求迷宫最短路径,虽然是老问题但还是想用自己的代码写出来,下面这个程序代码好像没问题,但编译时显示:espected declaetion or state ment at the end of input
我是懵逼了,请大家帮忙看看,谢谢
程序代码:#include<stdio.h>
#define N 5
int walk(char a[][N],int x,int y, char b[],int rear,int front)//最短路径步数
{ int n1,n2,n3,n4; //利用队列记录遇到的分叉口,每当遇到一个分叉口就让front记录当前位子
if(x>N-1&&x<0||y<0&&y>N-1) return front;// 不在迷宫内,返回上个路口的位子
if(a[x][y]!=' ') return front;//遇到路障或走过的路
if(a[x][y]=='E') return rear;
else
{
b[rear++]=x*100+y;//记录位子
a[x][y]='o';//足记
if(a[x+1][y]==' '||a[x-1][y]==' '||a[x][y+1]==' ') front=rear;//判断是否到达分叉口
n1=walk(a,x,y-1,b,rear,front);
if(a[x+1][y]==' '||a[x-1][y]==' '||a[x][y-1]==' ') front=rear;
n2=walk(a,x,y+1,b,rear,front);
if(a[x+1][y]==' '||a[x][y-1]==' '||a[x][y+1]==' ') front=rear;
n3=walk(a,x-1,y,b,rear,front);
if(a[x-1][y]==' '||a[x][y-1]==' '||a[x][y+1]==' ') front=rear;
n4=walk(a,x+1,y,b,rear,front);
if(n1==front&&n2==front&&n3==front&&n4==front) return front;
}
int main()
{
int m=64;
int p,q;
char a[][N]={{"S****"},
{" ****"},
{" ***E"},
{" *** "},
{" "}};
char b[m];
int rear=0,front=0;
int i,j;
for(i=0;i<N;++i)
{for(j=0;j<m;++j)
{
if(a[i][j]=='S'){p=i,q=j;}
else printf("error");
printf("%c ",a[i][j]);
}
printf("\n");
}
printf("%d",walk(a,p,q,b,rear,front));
return 0;
}







