| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1112 人关注过本帖
标题:迷宫
取消只看楼主 加入收藏
appleflower
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-12-9
收藏
 问题点数:0 回复次数:0 
迷宫
#include<iostream.h>
const int m=4,n=4;
int maze[m+2][n+2];//定义迷宫数组
int mark[m+2][n+2];//定义保存访问标记的数组
int move[4][2]={{0,1},{1,0},{0,-1},{-1,0}};//0,1,2,3代表东,西,南,北
int SeekPath(int x,int y)
{
 int i;         //代表从当前位置移到下一位置的方向
 int g,h;       //下一位置坐标
 if((x==m)&&(y==m))return 1;//到达出口点返回ture结束递归
 for(i=0;i<4;i++)
 {
  g=x+move[i][0];h=y+move[i][1];//求下一位置坐标
  if((maze[g][h]==0)&&(mark[g][h]==0))//若下一位置未被访问,则从该位置开始寻找
  {
   mark[g][h]=1;                //已访问结点做好标记
   if(SeekPath(g,h)){
    cout<<"("<<g<<","<<h<<"),";
    return 1;
   }
  }
 }
 cout<<"此迷宫无路径"<<endl<<endl;
 return 0;//无路径,返回false
}
void main()
{   
 int i,j;int q;
 while(q!=0)
 {
 cout<<"请输入6行,6列迷宫数据(0表示通路1表示不通!迷宫四周的值全为1!):"<<endl;
 for(i=0;i<m+2;i++)
  for(j=0;j<n+2;j++)
   cin>>maze[i][j];
    for(i=0;i<m+2;i++)                          //初始化mark数组
  for(j=0;j<n+2;j++)
   mark[i][j]=0;
 mark[1][1]=1;                               //置入口标记为1
 if(SeekPath(1,1))                            //递归求路径
  cout<<"("<<1<<","<<1<<")"<<endl<<endl;
    cout<<"输入另一迷宫按1 结束程序按0"<<endl;
 cin>>q;
 }
}
搜索更多相关主题的帖子: 迷宫 
2007-12-09 12:04
快速回复:迷宫
数据加载中...
 
   



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

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