老鼠走迷宮

2021-07-26 02:53:20 字數 1455 閱讀 7598

老鼠走迷官(一)

說明:老鼠走迷宮是遞迴求解的基本題型,我們在二維陣列中使用2表示迷宮牆壁,使用1來表

示老鼠的行走路徑,求出由入口至出口的路徑。

解法:老鼠的走法有上、左、下、右四個方向,在每前進一格之後就選乙個方向前進,無法前

進時退回選擇下乙個可前進方向,如此在陣列中依序測試四個方向,直到走到出口為止,這是

遞迴的基本題。

#include #include int visit(int, int); 

int maze[7][7] = ,

, ,

, ,

, };

int starti = 1, startj = 1; // 入口

int endi = 5, endj = 5; // 出口

int success = 0;

int main(void)

if(visit(starti, startj) == 0)

printf("\n沒有找到出口!\n");

else

printf("\n");

} }

return 0;

} int visit(int i, int j)

老鼠走迷官(二)

說明:由於迷宮的設計,老鼠走迷宮的入口至出口路徑可能不只一條,如何求出所有的路徑呢?

解法求所有路徑看起來複雜但其實更簡單,只要在老鼠走至出口時顯示經過的路徑,然後退

回上一格重新選擇下乙個位置繼續遞迴就可以了,比求出單一路徑還簡單,我們的程式只要作

一點修改就可以了。

/*求所有路徑*/

#include #include void visit(int, int);

int maze[9][9] = ,,,

,,,,

,};

int starti = 1, startj = 1; // 入口

int endi = 7, endj = 7; // 出口

int main(void)

visit(starti, startj);

return 0;

} void visit(int i, int j)

}if(maze[i][j+1] == 0) visit(i, j+1);

if(maze[i+1][j] == 0) visit(i+1, j);

if(maze[i][j-1] == 0) visit(i, j-1);

if(maze[i-1][j] == 0) visit(i-1, j);

maze[i][j] = 0;

}

老鼠走迷宮

說明 老鼠走迷宮是遞迴求解的基本題型,我們在二維陣列中使用2表示迷宮牆壁,使用1來表示老鼠的行走路徑,試以程式求出由入口至出口的路徑。解法 老鼠的走法有上 左 下 右四個方向,在每前進一格之後就選乙個方向前進,無法前進時退回選擇下乙個可前進方向,如此在陣列中依序測試四個方向,直到走到出口為止,這是遞...

老鼠走迷宮

參考 資料結構 胡昭民著 老鼠走迷宮 鏈棧實現 include include define north maze x 1 y 定義向北移動位置 define south maze x 1 y 定義向南移動位置 define west maze x y 1 定義向西移動位置 define east ...

老鼠走迷宮

1 找一組解 include define r 4 define c 4 表示移動的四個方向 int move 4 2 表示迷宮 int m r 2 c 2 表示走過的路 int t r 2 c 2 int maze int x,int y 往四個方向走 for int i 0 i 4 i retu...