算法:老鼠走迷宫问题
生活随笔
收集整理的這篇文章主要介紹了
算法:老鼠走迷宫问题
小編覺得挺不錯的,現(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
總結
以上是生活随笔為你收集整理的算法:老鼠走迷宫问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Common Knowledge_快速幂
- 下一篇: linux常用命令-压缩解压命令