dfs入門之迷宮(超時)

2021-08-16 23:14:28 字數 972 閱讀 7938

迷宮

description

小c最近在研究機械人,他想看看自己的機械人夠不夠智慧型,於是他將機械人放在乙個n*m的迷宮中,看看機械人能不能在最短的時間內到達目的地,可是小c不知道最短的時間是多少,現在請你幫他算算機械人到達目的地的最短時間是多少?

輸入資料第一行兩個整數n和m。

接下來n行,每行m個元素,表示迷宮的每個方格。

's'表示機械人的出發點,

't'表示目的地,

'#'表示該方格不能通過

'.'表示可以通過

輸出乙個整數表示機械人到達目的地的最短時間,如果機械人不能到達目的地,輸出-1。

3 3

s..

##.

.t.5

解題思路:

已經用bfs成功ac後,想用dfs試試,當然是在我對dfs和bfs的時間複雜度沒啥概念前才有的想法。。。

後來看了別人的部落格看到的:

二維陣列的題目,n小於

20的,適用

dfs。而一般 

n<= 200

,n<=1000

這種,一定不可能用

dfs去做。而且並不只是整個題目不能用

dfs,其中的

每一步也不能使用

dfs。

因此只有超時**:

#include

using namespace std;

int sx,sy,tx,ty;

typedef pairp;

char maze[1005][1005];

int n,m,flag=0,ans=inf,d;

int vis[1005][1005];

int dx[4]=,dy[4]=;

void dfs(int sx,int sy,int d)

for(int i=0;i<4;i++)

}return ;

}int main()

for(i=0;i

DFS(入門題,走迷宮)

1185 走迷宮 time limit 1 sec memory limit 128 mb submit 383 solved 155 submit status web board description 給一張個迷宮,問能否從起點走到終點,只能往上下左右走,不能斜著走 input 多組測試資料,...

迷宮問題dfs

迷宮問題 棧作為深度優先遍歷 dfs 採用的搜尋方法的特點是盡可能先對縱深方向進行搜尋 可以最快的找到解 include define m 8 define n 8 define maxsize 1000 typedef struct box typedef struct sttype 迷宮問題常用...

DFS 遞迴 迷宮

這幾天都在看那本演算法書 啊哈!演算法 今天看到深度優先搜尋 dfs 總結了自己看得懂的使用模板.dfs的模板.public class main static void dfs else 1 主方法呼叫靜態方法dfs。2 dfs方法的步驟 1 先判斷目前是否滿足條件。2 滿足的話,就執行輸出結果的...