自動尋找走出迷宮的最短路徑

2021-08-14 10:54:02 字數 2578 閱讀 2404

演算法心得:

1.利用廣度優先遍歷(bfs)實現尋找最短路徑

2.利用樹的思想,將每走一步的終點與它的起點相連線,這樣就能在最後把整條最短路徑找出來

//設定乙個結構體,儲存座標

struct note

que[size*size];

//儲存座標和連線指標

struct tree

*ans[size][2*size];

int main()

//設定地圖

void set_map()

}//列印地圖

void print_map()

if (i == end_x && j == end_y)

else

printf("%c", ch[i][j]);

} printf("\n"); }}

//設定起始位置

void set_startplace()

//設定終點

void set_endplace()

//控制命令臺輸出字型顏色函式

void color(const unsigned short color1)

//廣度搜尋和樹的結合

void bfs()

,,, };

int head, tail;

int k, flag = 0, tx, ty;

head = 1;

tail = 1;

que[tail].x = start_x;

que[tail].y = start_y;

mark[start_x][start_y] = 1;

ans[start_x][start_y] = (struct tree*)malloc(sizeof(struct tree));

ans[start_x][start_y]->x = start_x;

ans[start_x][start_y]->y = start_y;

ans[start_x][start_y]->next = null;

tail++;

while (head < tail)

if (ch[tx][ty] != 6 && ch[tx][ty] != 3 && mark[tx][ty] == 0)

if (tx == end_x && ty == end_y)

}if (flag == 1)

head++;

} if (flag == 0) }

//儲存路線

void printline(int x, int y)

}//移動函式

void move()

print_sentence();

}

//這是移動游標的函式

void gotoxy(int x, int y)

; /*coord是windows api中定義的一種結構,表示乙個字元在控制台螢幕上的座標。其定義為:

typedef struct _coord coord;*/

setconsolecursorposition(getstdhandle(std_output_handle), coord);

}//結束語

void print_sentence()

void print_loose()

for (s = 1;s<16;s++)

*/system("cls");

gotoxy(size, size / 2);

printf("對不起,你這個迷宮打死我也走不出來!!\n");

}

最短路徑走出迷宮

題目描述 解題思路 1.採用乙個二維陣列,不斷的接受迷宮地圖 因為有多個地圖 獲取到迷宮地圖後,採用廣度 優先方式走迷宮,找到的第一條路徑一定是最短的路徑,但是深度優先則不一定。2.結構設定 3.採用廣度優先方式走迷宮 將start入佇列,對該位置進行標記,只要佇列不為空,繼續以下步驟,直到到達出口...

尋找迷宮中的最短路徑

給定乙個n m的二維整數陣列,用來表示乙個迷宮,陣列中只包含0或1,其中0表示可以走的路,1表示不可通過的牆壁。最初,有乙個人位於左上角 1,1 處,已知該人每次可以向上 下 左 右任意乙個方向移動乙個位置。請問,該人從左上角移動至右下角 n,m 處,至少需要移動多少次。資料保證 1,1 處和 n,...

迷宮最短路徑

include include using namespace std const int max n 100,max m 100 const int inf 100000000 使用pair表示狀態時,使用typedef會更加方便一些 typedef pairp 輸入 char maze max ...