給乙個 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 每次只能上下左右走動,並且不能走出地...