日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

迷宫问题算法分析

發布時間:2025/6/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 迷宫问题算法分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先給出經典的算法,然后分析算法的實現

#define?? ?MAX_SIZE? 8
int H[4] = { 0, 1, 0, -1 };
int V[4] = { -1, 0, 1, 0 };
char Maze[MAX_SIZE][MAX_SIZE] =
?????????????????????????????? {{'X','X','X','X','X','X','X','X'},
???????????????????????????????? {'o','o','o','o','o','X','X','X'},
???????????????????????????????? {'X','o','X','X','o','o','o','X'},
???????????????????????????????? {'X','o','X','X','o','X','X','o'},
???????????????????????????????? {'X','o','X','X','X','X','X','X'},
???????????????????????????????? {'X','o','X','X','o','o','o','X'},
???????????????????????????????? {'X','o','o','o','o','X','o','o'},
???????????????????????????????? {'X','X','X','X','X','X','X','X'}};

void FindPath(int X, int Y)

{
if(X == MAX_SIZE || Y == MAX_SIZE)
{
???? ??? ?for(int i = 0; i < MAX_SIZE; i++)
for(int j = 0; j < MAX_SIZE; j++)
????????????????? printf("%c%c", Maze[i][j], j < MAX_SIZE-1 ? ' ' : '\n');
}
else
for(int k = 0; k < 4; k++)
if(X >= 0 && Y >= 0 && Y < MAX_SIZE && X < MAX_SIZE
&& 'o' == Maze[X][Y])
{
???????????????? ??? ?Maze[X][Y] = ' ';
???????????????? ??? ?FindPath(X+V[k], Y+H[k]);
???????????????? ??? ?Maze[X][Y] = 'o';
}
}

int main(int argc, char* argv[])
{
??? FindPath(1,0);
}

首先解釋一下迷宮問題,就是從一個迷宮中找出從指定的起點到終點的所有的可能的路徑的問題

在上面的例子('o'表示路徑可行,‘X’表示路徑不通)中其實是從一個6X8的迷宮中找出所有的可能的路徑,增加了兩行‘X’方便程序的處理,這樣問題就成了從一個8X8的迷宮中找路徑的問題了 ,起點是(1,0)終點是(6,7)。

FindPath(1,0); //當然是從起點開始找路徑的意思了

進入到遞歸函數中去了之后顯然是執行的else里面的語句

else
for(int k = 0; k < 4; k++)//這個for loop啥意思呢, 很容易想到是要遍歷當前位置的上下左右的位置的意思
if(X >= 0 && Y >= 0 && Y < MAX_SIZE && X < MAX_SIZE
&& 'o' == Maze[X][Y])
{
???????????????? ??? ?Maze[X][Y] = ' ';//這里為什么要將符合條件的位置置空,有兩個用途1,放置遍歷過的位置重復遍歷,退出一層遞歸(在這里是不滿足else的條件時)的時候方便輸出結果(可先運行代碼查看結果)
???????????????? ??? ?FindPath(X+V[k], Y+H[k]);//從V[k],H[k]可以看出V 和H這兩個數組是來表示位置的 (X+(-1),Y+0)就是表示方的的位置, 從這里可以看出遍歷當前位置的臨近位置的順序是up、right、bottom、left
???????????????? ??? ?Maze[X][Y] = 'o'; //遞歸退出之后要將當前我位置恢復, 否則的話, 該遞歸最多只能找到一種路徑
}

再看退出一層遞歸時執行的代碼

if(X == MAX_SIZE || Y == MAX_SIZE)
{
???? ??? ?for(int i = 0; i < MAX_SIZE; i++)
for(int j = 0; j < MAX_SIZE; j++)
????????????????? printf("%c%c", Maze[i][j], j < MAX_SIZE-1 ? ' ' : '\n');
}

//很明顯是將這個8X8的數組按照一定的格式輸出,注意輸出之后整個遞歸過程并沒有退出這是(X,Y)往往又會滿足else里面的條件哦,這樣的話,就能將所有的路徑遍歷出來,怎么樣?這個算法還是蠻經典嘛,當然我在這里只是將這個經典算法分析一下, 有更好的方案, 還請大家不吝賜教。



?

總結

以上是生活随笔為你收集整理的迷宫问题算法分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男人扒女人添高潮视频 | 国产又大又硬又粗 | 激情高潮呻吟抽搐喷水 | 欧美精品一区二区性色a+v | 91精品国产一区二区三区 | 男人天堂网在线视频 | 日韩一区二区三区三四区视频在线观看 | 国产精品专区在线观看 | 亚洲国产日本 | 人人干美女 | 亚洲三区精品 | 久久久无码人妻精品无码 | 阿v天堂在线观看 | 国产美女久久 | 欧美深夜在线 | 久久精品一区二区三区黑人印度 | 欧美日韩一区在线观看 | 97精品在线 | 国产肉体xxxx裸体784大胆 | 噜噜色网 | av女人的天堂 | 折磨小男生性器羞耻的故事 | 亚洲精品一二三四 | 青青操网站 | 我爱52av| 午夜免费福利小电影 | 国产无遮挡aaa片爽爽 | 免费黄色一级视频 | 深夜福利一区二区 | 西西人体高清44rt·net | 成人黄色免费在线观看 | 国产素人自拍 | 朋友人妻少妇精品系列 | 精品国产一区二区三区四区阿崩 | 漂亮人妻被中出中文字幕 | 在线观看麻豆 | 亚洲av无码一区二区乱子伦as | 天堂男人av | 国产91av视频 | 欧美一区二区三区激情啪啪 | 亚洲色成人一区二区三区小说 | 另类小说欧美 | 高清乱码毛片 | 久久精品国产99久久不卡 | 一区二区三区视频网站 | 欧美精品一级在线观看 | 国产看真人毛片爱做a片 | 国产农村妇女毛片精品久久麻豆 | 欧美啪视频 | 中文字幕亚洲精品在线 | 日韩久久久久久久 | 激情av在线播放 | 欧美a∨亚洲欧美亚洲 | 国产性猛交xxxⅹ交酡全过程 | 日韩一区二区免费视频 | 国产精品伦理一区二区 | 韩日一区二区 | 日本污视频在线观看 | 国产精品夜夜 | 好色视频tv | 黄色片成人 | 激情片 | 亚洲精品成人网 | 天堂在线视频网站 | www天天操 | 韩国一区二区三区视频 | 少妇性生活视频 | 99久久网站 | 日日噜噜噜夜夜爽爽狠狠视频97 | 国产欧美日韩在线播放 | 午夜福利理论片在线观看 | 欧美日韩在线观看视频 | 爱爱视频日本 | 中文字幕日韩欧美一区二区 | 懂色aⅴ一区二区三区免费 国产精品99在线观看 | 深爱婷婷| 98精品视频 | 黄色日b片 | 亚洲熟女一区 | 国产剧情av麻豆香蕉精品 | 嫩草国产| 亚洲欧美日韩视频一区 | 日韩 欧美 | 国产在线观看免费高清 | 日韩精品视频在线 | 黄色录像三级 | 少妇高潮惨叫久久久久久 | 波多野结衣导航 | 琪琪电影午夜理论片八戒八戒 | 51国产偷自视频区视频 | 99国产揄拍国产精品 | 一级视频在线免费观看 | 国产黄a | 欧美国产另类 | а√中文在线资源库 | 毛片网止 | 亚洲天堂色图 | 国产精品毛片一区二区三区 | 亚洲精品久久久中文字幕 |