老鼠走迷宮

2021-08-08 23:57:17 字數 1933 閱讀 3470

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++)}}

return0;}

int main(void)

2)所有解

#include

#define r 4

#define c 4

int move[4][2]=,,,

};int m[r+2][c+2]=,,,

,,};int t[r+2][c+2]=;

int s[r*c][2];//用棧,存放走過的路徑

int top=-1;//棧頂指標

int cnt=0;//統計情況

void show()

printf("\n");

}void maze(int x,int y)

for(i=0;i<4;i++)}}

int main(void)

3)去除t

#include

#define r 4

#define c 4

int move[4][2]=,,,

};int m[r+2][c+2]=,,,

,,};int s[r*c][2];

int top=-1;

int cnt=0;

void show()

printf("\n");

}void maze(int x,int y)

for(i=0;i<4;i++)}}

int main(void)

4)存所有情況,找最優解

#include

#include

#define r 4

#define c 4

int move[4][2]=,,,

};int m[r+2][c+2]=,,,

,,};int s[r*c][2];

int top=-1;

int cnt=0;

typedef

struct elemstep;

typedef

struct nodeelemsn;

elemsn *head=null,*tail;

void show()

printf("\n");*/

int i=0;

step *p,*t;

if(!head)

head=tail=(elemsn *)malloc(sizeof(elemsn));

else

tail=tail->next=(elemsn *)malloc(sizeof(elemsn));

tail->next=null;

tail->nextstep=null;

tail->allstep=top+1;//總步逐數

t=tail->nextstep;

while(i<=top)

}void maze(int x,int y)

for(i=0;i<4;i++)

}}void printlink()

}int main(void)

老鼠走迷宮

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

老鼠走迷宮

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

老鼠走迷宮

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