如果迷宮的設計使得走法不止一種,則只要在老鼠走至出口時顯示出所有的路徑,然後退回上一格重新選擇下乙個位置繼續遞迴就可以了。如下圖有兩種走法。
#include#includevoid visit(int,int);
int maze[9][9] = ,,,
,,,,
,};
int starti = 1,startj = 1;//開始的位置
int endi = 7, endj = 7;//出口的位置
void visit(int i,int j)
}if( maze[i+1][j]==0) visit(i+1,j);
if( maze[i-1][j]==0) visit(i-1,j);
if( maze[i][j+1]==0) visit(i,j+1);
if( maze[i][j-1]==0) visit(i,j-1);
maze[i][j]=0;
}int main()
visit(starti,startj);
return 0;
}
演算法之老鼠走迷宮1 找一條路
老鼠走迷宮問題是遞迴的乙個經典應用演算法 基本描述如下 有乙個只老鼠在迷宮裡,隨便給幾個起點,給乙個終點,找出一條由起點到終點的連通路徑。簡單設計如下 老鼠在任何一點的行動方向都有四種可能行,上下左右 每當發生一次移動之後,下一次移動又有四種可能性。因此可以用遞迴來解決該問題,為了 中直觀地顯示,我...
演算法 找顏色
1億個球有1000種顏色,其中有一半的球是同一種顏色,採用一種方式能盡快的選出這個顏色。按照不同色的抵消思路,1億個球放在a桶,b桶是個空桶,將a桶的球乙個乙個轉移到b桶,如果放進桶裡顏色的球不同,就清除該色的球,剩餘的桶裡的球就是這個顏色 include include using namespa...
a 演算法迷宮 c 迷宮中的老鼠
之前我們已經討論了採用回溯 backtracking 方法來解決西洋棋中馬的遍歷問題。為了讓大家更加熟悉回溯方法,我們將在後面的課程中再分析幾個例子。今天先看乙個使用回溯方法解決老鼠走迷宮的問題。下圖是乙個迷宮,其中塗上灰色的方格,老鼠不能進入,請找出老鼠從起點到終點的線路。老鼠只能向兩個方向移動 ...