廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 31975 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為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.080629 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言