广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 31960 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
billy7074396 手机
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x2 鲜花 x25
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x1
[C/C++][求助] C语言用堆叠写老鼠走迷宫? (急QQ)
编译器是Dev C++  
先读入txt档里面有迷宫的图!!
1代表墙壁  0代表可以走的路
类似这样

0111111111
1000111111
1110110001
1110111111
1110000111
1110110111
1111101101
1111101011
1100000001
1111111110
最外层一定是墙壁所以是1   左上角是0代表入口  右下角是0代表出口
可以走的方向有  八个方向(并非上下左右而已)
要用堆叠写 Stack 
上面的程式码是我目前写的!!  可是后面的判断我就不会写了!!  希望大大帮帮忙!!

#include <stdio.h>
#include &l ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容




献花 x0 回到顶端 [楼 主] From:台湾中华电信股份有限公司 | Posted:2012-11-14 19:36 |
ChaosX 会员卡
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 优秀管理员勋章 社区建设奖
头衔:哈哈哈~你看看你!哈哈哈~你看看你!
分类版主
级别: 分类版主 该用户目前不上站
版区: 游戏欢乐包, 电玩游戏
推文 x722 鲜花 x1454
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

看就知道是资料结构的作业....
你要的部分你可以去抄资料结构课本...
运气好的话通常里面都会有教你怎么做....


复制程式
void path(void)
{
   int i,row,col,nextRow,nextCol,dir,found = FALSE;
   offsets move[8] = {{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}}; //移动方向 
   element position;
   mark[1][1] = 1; //起始位置标记为1 
   top = 0;  //堆叠阵列最上面的元素位置为0 
   stack[0].row=1;  
   stack[0].col=1;
   stack[0].dir=1;
   while(top > -1 && !found)   //有堆叠而且找不到出口 
   {
      position = pop();   //将堆叠最上面的元素拿出来
      row = position.row;  
      col = position.col;   
      dir = position.dir;   
      while(dir < 8 && !found)   //还有其他方向没有找而且找不到出口
      {
         nextRow = row + move[dir].vert;     //产生下一步row位置 
         nextCol = col + move[dir].horiz;    //产生下一步col位置 
         
         if(nextRow == EXIT_ROW && nextCol == EXIT_COL)  //判定是否为出口 
         {
           found = TRUE;        //是的话就找到了 
         }
         else if(!maze[nextRow][nextCol] && !mark[nextRow][nextCol]) //是否可以走而且是没走过的路 
         {
           mark[nextRow][nextCol] = 1;  //对找到的下一步做标记 
           position.row = row;     //现在row位置  
           position.col = col;     //现在col位置 
           position.dir = ++dir;   //下次走的方向 
           push(position);         //放入堆叠 
           row = nextRow;          //下次的row位置 
           col = nextCol;          //下次的col位置 
           dir = 0;                //从第一组移动方向开始找起 
         }
         else
         {
               ++dir;               //换下一组移动方向 
         } 
      }
   }
   
   if(found)                 //有找到出口的话 
   {
     printf("The path is:\n");
     printf("row col\n");
     for(i=0;i<=top;i++)                
     {
       printf("%2d%5d \n",stack[i].row,stack[i].col);    //印出在堆叠的路径 
       maze[stack[i].row][stack[i].col]=2;   //等等印出迷宫时顺便印出老鼠的路径
     }
     printf("%2d%5d \n",row,col);    //印出现在位置 
     printf("%2d%5d \n",EXIT_ROW,EXIT_COL);  //印出出口位置 
     
     maze[row][col] = 2;      //等等印出迷宫时顺便印出现在位置 
     maze[EXIT_ROW][EXIT_COL] = 2; //等等印出迷宫时顺便印出终点 
     
   }
   else
   {
     printf("The maze does not have a path\n");    //找不到出口
   }   
}

此文章被评分,最近评分记录
财富:75 (by ebolaman) | 理由: Stackkk ^^


版主以死 有事烧纸
献花 x3 回到顶端 [1 楼] From:台湾教育部 | Posted:2012-11-14 19:57 |
billy7074396 手机
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x2 鲜花 x25
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

谢谢你的解答喔!!
你的写法跟我课本写的是差不多的!!
也许我不懂的是"堆叠"的架构和写法而已!!
课本写的程式码有些我没学过! 实在是有看没有懂> < !!
不过还是谢谢你的帮忙!! 让我多一个参考~~


献花 x0 回到顶端 [2 楼] From:台湾中华电信股份有限公司 | Posted:2012-11-14 20:26 |
ChaosX 会员卡
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 优秀管理员勋章 社区建设奖
头衔:哈哈哈~你看看你!哈哈哈~你看看你!
分类版主
级别: 分类版主 该用户目前不上站
版区: 游戏欢乐包, 电玩游戏
推文 x722 鲜花 x1454
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 billy7074396 于 2012-11-14 20:26 发表的 : 到引言文
谢谢你的解答喔!!
你的写法跟我课本写的是差不多的!!
也许我不懂的是"堆叠"的架构和写法而已!!
课本写的程式码有些我没学过! 实在是有看没有懂> < !!
不过还是谢谢你的帮忙!! 让我多一个参考~~
因为我当初写这作业也是抄课本的XD


版主以死 有事烧纸
献花 x0 回到顶端 [3 楼] From:台湾教育部 | Posted:2012-11-14 22:05 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.109368 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言