計蒜客 走迷宮

2021-09-10 14:38:51 字數 840 閱讀 5764

給乙個 n行 m 列的 2 維的迷宮,'s'表示迷宮額起點,'t'表示迷宮的終點,'#'表示不能通過的點,'.' 表示可以通過的點。你需要從's'出發走到't',每次只能上下左右走動,並且只能進入能通過的點,每個點只能通過一次。現在要求你求出有多少種通過迷宮的的方案。

輸入格式

第一行輸入 n, m (1≤n,m≤10) 表示迷宮大小。

接下來輸入 n行字串表示迷宮。

輸出格式

輸入通過迷宮的方法數。

樣例輸入1

2 3s.#

..t樣例輸出1

2樣例輸入2

3 3s..

.#...t

樣例輸出2

2

#include#include#includeusing namespace std;

const int n=10;

char a[n+5][n+5];

int flag[n+5][n+5];

int cnt=0;

int n,m;

void dfs(int x,int y)

if(a[x][y]=='#')

if(a[x][y]=='t')

if(!flag[x+1][y])//向右走

if(!flag[x][y+1])//向上走

if(!flag[x-1][y])//向左走

if(!flag[x][y-1])//向下走

return;

}int main()

} }flag[sx][sy]=1;

dfs(sx,sy);

cout

}

計蒜客 走迷宮2 bfs

一樣的迷宮,這次要求不是求有多少條出去的路,而是求最短出去的路,使用bfs就可以知道了。需要用乙個char陣列儲存迷宮 乙個int陣列表示距離長度 乙個bool陣列表示是否訪問過 這不是唯一的,還有其它的可能性,可以三合一,如這裡的表示方式 給你乙個 n 行 m 列的二維迷宮。s 表示起點,t 表示...

計蒜客習題 蒜頭君走迷宮

蒜頭君從乙個 n 行 m 列的迷宮的左上角走到右下角,蒜頭君每次只能向下或者向右走一步,蒜頭君想知道他有多少種走法。輸入格式 輸入兩個整數 n 2 n 10 5 m 2 m 10 5 輸出格式 由於方案數太多,輸出最後結果對 1000000007 取模的結果。樣例輸入 2 3 樣例輸出 3 incl...

計蒜客深度優先搜尋基礎題目 走迷宮

dfs 和遞迴的區別是,dfs 是一種演算法,注重的是思想,而遞迴是程式語言的一種寫法。我們通過遞迴的寫法來實現 dfs 下面我們通過乙個實際問題來理解 dfs 到底幹了什麼。s t其中 s 表示起點,t 表示終點,表示牆壁,表示平地。你需要從 s 出發走到 t 每次只能上下左右走動,並且不能走出地...