今天我已經學習了DFS,今天我嘗試了練習。Traveral迷宮和深度優先搜索
我在我的程序中遇到問題。
void dfs(int x,int y){
if(maze[x][y]==0) maze[x][y]=2;
if(maze[8][8]==2){
flag=true;
return;
}
if(maze[x+1][y]==0 && x+1<9){
maze[x][y]=2;
maze[x+1][y]=2;
dfs(x+1,y);
if(f lag==false){
maze[x+1][y]=0;
maze[x][y]=0;
}
}
else if(maze[x][y+1]==0 && y+1<9){
maze[x][y]=2;
maze[x][y+1]=2;
dfs(x,y+1);
if(flag==false){
maze[x][y+1]=0;
maze[x][y]=0;
}
}
else if(maze[x-1][y]==0 && x-1>0){
maze[x][y]=2;
maze[x-1][y]=2;
dfs(x-1,y);
if(flag==false){
maze[x-1][y]=0;
maze[x][y]=0;
}
}
else if(maze[x][y-1]==0 && y-1>0){
maze[x][y]=2;
maze[x][y-1]=2;
dfs(x,y-1);
if(flag==false){
maze[x][y-1]=0;
maze[x][y]=0;
}
}
return;
}
1. 的鏈接是我寫的程序,但我不知道如何找到最短路徑。
2. 你可以給我一些關於如何使用堆棧的建議,我只使用遞歸。我已經看到了關於它的wiki,但是仍然不能理解如何使用堆棧(例如,如何使用1 -D陣列記錄約2-d陣列的地步,我對此很困惑)
感謝您花時間閱讀我的問題
請將相關代碼發佈到您的問題中,並確保您的縮進不會像在鍵盤 – 111111 2012-03-09 18:00:26
中那樣。另外,如果你不喜歡深刻的縮進,我建議你避免內核代碼。 – Alex 2012-03-09 18:07:59
@ 111111:請不要粗暴(至少看似)初學者。當我開始編程時,我根本沒有縮進,而且離這裏還有很長的路要走。我們都是初學者一次。 – LiKao 2012-03-09 18:10:22