C語言專案 1 迷宮問題求解

2021-09-24 05:16:32 字數 1256 閱讀 2250

無意中發現了乙個巨牛巨牛的人工智慧教程,忍不住分享一下給大家。教程不僅是零基礎,通俗易懂,小白也能學,而且非常風趣幽默,還時不時有內涵段子,像看**一樣,哈哈~我正在學習中,覺得太牛了,所以分享給大家。點這裡可以跳轉到教程!

/*          迷宮問題求解          */

#define endm 8 // 目標點橫座標

#define endn 9 // 目標點縱座標

#define sm 1 //出發點橫座標

#define sn 1 //出發點縱座標

#define row 10

#define col 11

#include"stack.h" //請一定要認真看看stack.**件哦,它可能和你現在編的函式有些小差異。

int dx[4]= ; //方向定義,右0 下1 左2 上3 此處可根據出發點和目標點的不同而調整,使得路線盡量最短

int dy[4]= ;

char map[10][11]= ,

, ,

, ,

, ,

, ,

};int aa[10][11]=,,,

,,,,

,,,};int r(int u,int v) //對於乙個給定的座標,如果該點越界或是障礙點,返回1,否則返回0

int main()

else //如果棧內有點,那麼就原路退回到剛走過來的那個點(舊點),並且重新重新整理i,j,k的值

}u= i + dx[k]; //產生新的嘗試點(u,v)

v= j + dy[k];

}while(aa[u][v]==1 || r(u,v)==1); //必須是沒走過的點,而且是未越界的非障礙點

if (u==endm && v== endn) //如果嘗試點就是終點,那說明已經找到終點了,完整路徑存放在此時的堆疊中。

for (i=0; i<10; i++) //輸出迷宮和走法

destroystack(&s); //撤退之前別忘了打掃戰場,退出之前一定要記得銷毀順序棧哦!

return 0;

} push(&s, i, j, k); //如果嘗試點不是終點,則將當前點和方向壓棧,並「向前走(即修改當前點的值為(u,v) )」

迷宮問題求解(1) 簡單迷宮

標頭檔案 include include include include include maze.h define max 100 typedef struct position datatype typedef struct stack stack void stackinit stack s ...

c語言迷宮問題求解 遞迴 棧回溯

第一次寫,見諒 以下是求迷宮的實現 為什麼下面會出現標籤啊,有什麼簡便的方法去掉嗎?求告知 最後是關於求所有通路,個人愚笨只想到改變搜尋方向順序這種笨方法,總共有16種 第一部分使用遞迴求解 為了資料的簡單化,不對路口進行資料結構化,將用乙個簡單的int型別陣列來表示迷宮 因為每乙個路口的四個方向相...

求解迷宮問題

求解迷宮問題 include using namespace std const int m 6 const int n 8 int maze m 2 n 2 m n大小的迷宮,0可前進,1通行受阻。並且在迷宮的周圍鑲上邊框 int mark m 2 n 2 儲存訪問標記,0未訪問,1已訪問 int...