CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  图形处理/算法

倾家荡产求助。。急

楼主buupig(布欧猪)2005-06-02 21:35:22 在 VC/MFC / 图形处理/算法 提问

在二维迷宫里面,从出发点开始,每个点按四邻域算,按照右,上,左,下的顺序搜索下一落脚点,有路则进,无路即退,前点再从下一个方向搜索,即可构成一有序模型.下表即迷宫  
   
   
   
  {     1,1,1,1,1,1,1,1,1,1,    
   
   
   
          0,0,0,1,0,0,0,1,0,1,    
   
   
   
          1,1,0,1,0,0,0,1,0,1,    
   
   
   
          1,0,0,0,0,1,1,0,0,1,    
   
   
   
          1,0,1,1,1,0,0,0,0,1,    
   
   
   
          1,0,0,0,1,0,0,0,0,0,    
   
   
   
          1,0,1,0,0,0,1,0,0,1,    
   
   
   
          1,0,1,1,1,0,1,1,0,1,    
   
   
   
          1,1,0,0,0,0,0,0,0,1,    
   
   
   
          1,1,1,1,1,1,1,1,1,1}  
   
   
   
  这个迷宫     请帮忙用  
   
  双向广度搜索       分支定界       A*算法       三种算法各解决一下  
   
  用VB++写       万分感谢。。。。  
   
  问题点数:0、回复次数:15Top

1 楼buupig(布欧猪)回复于 2005-06-02 22:34:27 得分 0

求     求Top

2 楼eastred(东方红)回复于 2005-06-03 14:35:52 得分 0

“VB++”   这个是什么??Top

3 楼buupig(布欧猪)回复于 2005-06-03 15:43:25 得分 0

写错了   是VC++Top

4 楼buupig(布欧猪)回复于 2005-06-03 16:20:56 得分 0

帮忙哇     这个程序对各位来说   简单   对小弟我是一点也不懂啊Top

5 楼ukyo1(**)回复于 2005-06-03 18:41:45 得分 0

VB++   (-_-)||  
  我没时间写了,而且程序比较复杂,网上的相关文章很多,你可以找找看,自己动手丰衣足食:)Top

6 楼Summer006(脸都丢尽了!闭关修练。。。。)回复于 2005-06-04 12:06:19 得分 0

以前做过,现在忘了~Top

7 楼xtjqu(LPVOID)回复于 2005-06-04 12:36:45 得分 0

咱们这里怎么成了写门代写作业的地方?  
  改改名吧,叫作业论坛Top

8 楼wqs6(竹山)回复于 2005-06-04 19:39:20 得分 0

有点像八皇后问题,网上肯定有类似算法  
   
  你找找看吧,要重新写一个好像有点困难!Top

9 楼perfect1()回复于 2005-06-04 19:51:04 得分 0

清华的数据结构上有  
  以前做过.Top

10 楼icansaymyabc(学习与进步)回复于 2005-06-06 18:00:33 得分 0

#include   "stdafx.h"  
  //要在vc   2005   中编译,因为   vc   2005   支持中文变量  
  //用其他编译器的话需要你自己把文中全部中文变量替换成英文变量  
  #include   <stdlib.h>  
  #include   <conio.h>  
  #include   <windows.h>//这个头文件仅提供Sleep()的声明,不用Sleep的话可以去掉这一行  
   
  enum   位置状态{空地=0,墙=1,尝试,死路=4,活路=9};  
  class   迷宫{ static   char   c地图[10][10];  
  public:  
  static   int   i起点x,   i起点y,   i终点x,   i终点y;  
  void   标记地图(int   x,int   y,   位置状态   v){ c地图[y][x]=v;}  
  void   show(int     显示延迟=0){ if(显示延迟<0){ printf("\n\t按任意键显示下一步......");getch();}  
  else   if(显示延迟)Sleep(显示延迟);//如果没有Sleep函数,则可把这里改成   getch();变成按一下显示一下  
  system("cls"); static   int   count;  
  printf("\n>>第   %d   步:\n\t************************************\n\t*                                                                     *\n",count++);    
  for(int   j,i=0;i<10;i++){printf("\t*     ");for(j=0;j<10;j++)printf("   %d   ",c地图[i][j]);printf   ("     *\n");}  
  printf("\t*                                                                     *\n\t************************************\n\n",count++);   }  
  bool   Is空地(int   x,int   y){return   (x>=0&&x<10&&y<10&&y>=0)?c地图[y][x]==位置状态::空地:false;}  
  bool   Is终点(int   x,int   y){return   x==i终点x&&y==i终点y;}   };  
  int     迷宫::i起点x=0,   迷宫::i起点y=1,   迷宫::i终点x=9,   迷宫::i终点y=5;  
  char   迷宫::c地图[10][10]={1,1,1,1,1,1,1,1,1,1,       0,0,0,1,0,0,0,1,0,1,     1,1,0,1,0,0,0,1,0,1,     1,0,0,0,0,1,1,0,0,1,       1,0,1,1,1,0,0,0,0,1,     1,0,0,0,1,0,0,0,0,0,     1,0,1,0,0,0,1,0,0,1,     1,0,1,1,1,0,1,1,0,1,     1,1,0,0,0,0,0,0,0,1,     1,1,1,1,1,1,1,1,1,1};  
  class   堆栈   {struct   {int   x,y;}   dat[100]; int   top;  
  public: 堆栈():top(-1){}  
  void   push(int   sx,   int   sy){   dat[++top].x=sx;dat[top].y=sy;}  
  bool   pop(int   *px=0,   int   *py=0){if(top<0)return   false;else{if(px)*px=dat[top].x;if(py)*py=dat[top].y;top--;   return   true;}}};  
  class   迷宫探索者:private   迷宫{堆栈   rec;  
  public: bool   标记地图时显示一下;   int   idelay;  
  void   标记地图(int   x,int   y,   位置状态   v){迷宫::标记地图(x,y,v);   if(标记地图时显示一下)show(idelay);}  
  bool   探路(int   测试起点x,   int   测试起点y);  
  bool   去探路吧();  
  private:   int   看看四周(int   x,   int   y);   };  
  bool   迷宫探索者::去探路吧(){   int   x=i起点x,   y=i起点y;   return   探路(x,y);}  
  bool   迷宫探索者::探路(int   测试起点x,   int   测试起点y){int   &x=测试起点x,   &y=测试起点y,nx,ny;  
  if(Is终点(x,y)){标记地图(x,y,活路);return   true;}  
  int   t;if((t=看看四周(x,   y))==0){标记地图(x,y,死路); return   false;}else{  
  标记地图(x,y,尝试); for(int   i=0;i<t;i++){ rec.pop(&nx,&ny);if(探路(nx,ny)){标记地图(x,y,活路);return   true;}}  
  标记地图(x,y,死路); return   false;}}  
  int   迷宫探索者::看看四周(int   x,   int   y){int   r=0;  
  //特别说明,下面4条语句相当关键,其顺序可以随意调整,不同的顺序会找到不同的通路。  
  if(Is空地(x     ,y-1)){rec.push(x     ,y-1);r++;}  
  if(Is空地(x-1,y     )){rec.push(x-1,y     );r++;}  
  if(Is空地(x     ,y+1)){rec.push(x     ,y+1);r++;}  
  if(Is空地(x+1,y     )){rec.push(x+1,y     );r++;}  
  return   r;}  
  int   _tmain(int   argc,   _TCHAR*   argv[]){  
  迷宫探索者   我;  
  我.标记地图时显示一下   =   true;  
  我.idelay   =   618;  
  if(我.去探路吧())printf("\n!!!!恭喜我走通迷宫!!!!\n");else   printf("\n!!!谴责不会走迷宫的我吧!!!\n");    
  return   0;  
  }  
  Top

11 楼icansaymyabc(学习与进步)回复于 2005-06-06 18:03:14 得分 0

int   _tmain(int   argc,   _TCHAR*   argv[]){  
   
  这一句换成  
   
  int   main(int   argc,   char   *   argv[]){  
   
  效果一样Top

12 楼sboom(+-LingCh-+)(爱美人不爱VC)回复于 2005-06-07 02:24:10 得分 0

作业来的。Top

13 楼BeginnerCpp(禅)回复于 2005-06-07 11:08:32 得分 0

to     :     学习与进步   :  
   
  要在vc   2005   中编译,因为   vc   2005   支持中文变量  
   
  ======  
   
  晕,  
  真的吗?  
   
   
  VC2005现在有破解的企业版吗?  
  Top

14 楼icansaymyabc(学习与进步)回复于 2005-06-07 12:02:53 得分 0

VC2005现在的最新版是   beta2,Team   版的,比企业版还好。   正式版还没出来Top

15 楼hhoking(妙手仁心)回复于 2005-06-07 13:23:38 得分 0

长见识了,还有支持中文变量的编译器,我得跟进了,娃哈哈。Top

相关问题

  • 急急急,倾家荡产求救!!!
  • 倾家荡产紧急求救!
  • 倾家荡产,急要列表控件..........
  • “倾家荡产”求一解!!!在线急盼!!!
  • 倾家荡产:500分求该系统设计(急,求帮忙)
  • 倾家荡产!!!!!!!
  • 着急万分,倾家荡产求解决一个javascrip小问题!在线等!!
  • 倾家荡产问一题,急!怎么循环发送数字到另一个页面?谢谢了
  • 倾家荡产解决报表显示问题,解决后再散100分.在线急等!!!!!!!!!!!!!!!!!!!!!!!!
  • 倾家荡产为控件

关键词

  • 算法
  • top
  • 迷宫
  • 终点
  • 变量
  • c地图
  • 起点
  • dat
  • 位置状态
  • 搜索

得分解答快速导航

  • 帖主:buupig

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo