求迷宫最短路径
求迷宫最短路径,虽然是老问题但还是想用自己的代码写出来,下面这个程序代码好像没问题,但编译时显示: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; }