走迷宮
problem description
乙個由n*m個格仔組成的迷宮,起點是(1,1),終點是(n,m),每次可以向上下左右四個方向任意走一步,並且有些格仔是不能走動,求從起點到終點經過每個格仔至多一次的走法數。
input
第 一行乙個整數t 表示有t 組測試資料。(t <= 110)對於每組測試資料:
第一行兩個整數n, m,表示迷宮有n * m 個格仔。(1 <= n, m <= 6, (n, m) !=(1, 1) ) 接下來n 行,每行m 個數。其中第i 行第j 個數是0 表示第i 行第j 個格仔可以走,否則是1 表示這個格仔不能走,輸入保證起點和終點都是都是可以走的。
任意兩組測試資料間用乙個空行分開。
output
對於每組測試資料,輸出乙個整數r,表示有r 種走法。
example input
32 20 1
0 02 2
0 11 0
2 30 0 0
0 0 0
example output
104
**如下:
#includeint n,m,sum;
int i,j;
int a[11][11],vis[11][11];
void dfs(int si,int sj)
else
}int main()
sum=0;
dfs(0,0);
printf("%d\n",sum);
}return 0;
}
深度優先搜尋應用 走迷宮
走迷宮問題是深度優先搜尋的乙個典型應用,通常迷宮的形狀如下 0為可走的道路,1為牆壁。通常情況下一些變種的模型,會加入一些特殊項,有別的意思,比如數字5代表鑰匙,當然複雜模型先不討論,從最簡單的開始。include include include include using namespace st...
走迷宮(深度優先搜尋版)
includeusing namespace std int a 50 50 book 50 50 n,m,p,q 定義全域性變數,二維陣列a用來儲存n行m列的迷宮,book陣列用來標記。p,q為目的地座標,min記錄最小步數 void dfs int x,int y,int step dfs函式用...
深度優先搜尋DFS(迷宮問題)
問題及 給出迷宮的圖紙和初始終點位置,用dfs求最小步數。include using namespace std int n,m,p,q,min 99999999 int a 51 51 book 51 51 void dfs int x,int y,int step 順時針 右下左上 int tx...