| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 954 人关注过本帖
标题:求迷宫最短路径
只看楼主 加入收藏
moox
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:92
专家分:93
注 册:2017-1-21
结帖率:82.35%
收藏
已结贴  问题点数:20 回复次数:1 
求迷宫最短路径
求迷宫最短路径,虽然是老问题但还是想用自己的代码写出来,下面这个程序代码好像没问题,但编译时显示:
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;
  }
搜索更多相关主题的帖子: color 
2017-04-15 19:05
NiuYoohoo
Rank: 4
等 级:业余侠客
威 望:2
帖 子:65
专家分:216
注 册:2016-10-8
收藏
得分:14 
算法珠矶可以去看看
2017-04-15 21:14
快速回复:求迷宫最短路径
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024728 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved