迷宮問題
time limit:1000ms
memory limit:65536k
total submissions:18595
accepted:11004
description
定義乙個二維陣列:
int maze[5][5] = ;
它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。
input
乙個5 × 5的二維陣列,表示乙個迷宮。資料保證有唯一解。
output
左上角到右下角的最短路徑,格式如樣例所示。
sample input
0 1 0 0 0sample output0 1 0 1 0
0 0 0 0 0
0 1 1 1 0
0 0 0 1 0
(0, 0)(1, 0)
(2, 0)
(2, 1)
(2, 2)
(2, 3)
(2, 4)
(3, 4)
(4, 4)
dfs的題目 求迷宮的最短路徑
思路是 設定乙個方向陣列來控其行走的方向 若其該方向上的點滿足條件則記錄該點並標記且以該點為結點進行下一步搜尋
若不滿足條件 換另一方向重新進行 每當有一條路徑到達終點 判斷其步數是否小於之前最小路徑 是則重新整理最終路徑陣列
ac**:#include #include struct node;
node a[100];//記錄最終路徑
node tempa[100];//記錄中間路徑
int vis[10][10];
int dir[4][2]=;//方向陣列
int min=9999;
int map[10][10];
void dfs(int x,int y,int step)
}
}
int main ()
} memset(vis,0,sizeof(vis));//將迷宮中的所有點都標記為未被訪問狀態
vis[0][0]=1;//將初始位置標記為已被訪問
dfs(0,0,0);
printf ("(0, 0)\n");
for (int i=0;i
POJ 3984 迷宮問題 DFS
簡單的dfs問題,用乙個vector來儲存答案。注意,要搞清楚每乙個 dfs 函式的作用。這裡的dfs函式,就是在已經將這一處的位置置於答案裡,且將view遍歷後的狀態下,搜尋四周的幾處狀態。如果子狀態真,那麼這個狀態為真。如果子狀態都是假的,那麼這個狀態也是假的。總結 dfs板子 1.首先,用遞迴...
poj 3984 迷宮問題 dfs 求迷宮路徑
利用圖論中深搜的思想,存在邊就是x,y x 1,y 還有x,y x,y 1 然後仍然是訪問未訪問的而且不是牆壁的地方。這樣保證不走已經搜尋過,走不通的路。唯一一種需要重複訪問已經訪問的結點的情況是已經無路可走了,只能返回,這樣就在棧中將路徑取出來,把自己現在的那個先pop掉,然後實現回溯。最後用向量...
poj 3984 迷宮問題 dfs 求迷宮路徑
利用圖論中深搜的思想,存在邊就是x,y x 1,y 還有x,y x,y 1 然後仍然是訪問未訪問的而且不是牆壁的地方。這樣保證不走已經搜尋過,走不通的路。唯一一種需要重複訪問已經訪問的結點的情況是已經無路可走了,只能返回,這樣就在棧中將路徑取出來,把自己現在的那個先pop掉,然後實現回溯。最後用向量...