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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

算法:老鼠走迷宫问题

發(fā)布時間:2023/12/1 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法:老鼠走迷宫问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

算法:老鼠走迷宮問題(初)

【寫在前面】

  老鼠走迷宮問題的遞歸實現(xiàn),是對遞歸思想的一種應用。

【問題描述】

  給定一個二維數(shù)組,數(shù)組中2表示墻壁,0表示通路,由此數(shù)組可展示為一個迷宮圖。給定入口位置和出口位置,判斷之間是否存在通路并顯示出走出迷宮的道路。  

【代碼】

對題目的描述部分

int migo[7][7]={ {2, 2, 2, 2, 2, 2, 2}, {2, 0, 0, 0, 0, 0, 2}, {2, 0, 2, 0, 2, 0, 2}, {2, 0, 0, 0, 0, 2, 2}, {2, 2, 0, 2, 0, 2, 2}, {2, 0, 0, 0, 0, 0, 2}, {2, 2, 2, 2, 2, 2, 2}};//迷宮圖int startX=1,startY=1;
int endX=5,endY=5;

說明:

    1.給出用來描述迷宮信息的數(shù)組。

    2.給出入口和出口坐標。

遞歸的實現(xiàn)部分

int flag=0;int find(int x,int y) {migo[x][y]=1;if(x==endX&&y==endY)flag=1;if(migo[x][y+1]==0&&flag!=1)find(x,y+1);if(migo[x][y-1]==0&&flag!=1)find(x,y-1);if(migo[x+1][y]==0&&flag!=1)find(x+1,y);if(migo[x-1][y]==0&&flag!=1)find(x-1,y);if(flag!=1)migo[x][y]=0;return flag; }

說明:

    1.第一句代碼 migo[x][y]=1,意義何在呢?我們在開始處把它設為1,表示我們以此為軸開始朝四周移動,每到下一個點便再以之為軸,...不段進行判斷,直達我們找到通路,即flag=1。但是我們需要明白的是,一旦我們沿某條路找不到通路時,最后一句代碼

    便又將其還原為0,在對迷宮的所有道路探索后,我們可能會找到通路,那條路上的每一個元素便會被賦予1,如果都沒有,那就不會。

    2.關于遞歸的思路:不斷以某點為軸,向四處擴散,在找到出口點便停止遞歸。

道路展示實現(xiàn)部分

int main(int argc, char **argv) {int i,j;printf("顯示迷宮:\n");for(i=0;i<7;i++){for(j=0;j<7;j++)if(migo[i][j]==2)printf("");elseprintf(" ");printf("\n");}if(find(startX,startY)==0){printf("\n沒有找到出口!\n");}else{printf("\n顯示路徑:\n");for(i=0;i<7;i++){for(j=0;j<7;j++){if(migo[i][j]==2)printf("");else if(migo[i][j]==1)printf("*");elseprintf(" ");}printf("\n");}}return 0; }

?

轉載于:https://www.cnblogs.com/MrSaver/p/5940386.html

總結

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

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