馬在中國象棋以日字形規則移動。
請編寫一段程式,給定n*m大小的棋盤,以及馬的初始位置(x,y),要求不能重複經過棋盤上的同乙個點,計算馬可以有多少途徑遍歷棋盤上的所有點。
input
第一行為整數t(t < 10),表示測試資料組數。
每一組測試資料報含一行,為四個整數,分別為棋盤的大小以及初始位置座標n,m,x,y。(0<=x<=n-1,0<=y<=m-1, m < 10, n < 10)
output
每組測試資料報含一行,為乙個整數,表示馬能遍歷棋盤的途徑總數,0為無法遍歷一次。
sample input
15 4 0 0
sample output
32這道題主要是去理解馬是如何移動的,因為馬走日所以可以走八個方向。
然後用深度優先搜尋遍歷這個圖。
#include
#include
int next[8]
[2]=
,,,,
,,,}
;int book[
100]
[100
],s,n,m;
void
dfs(
int x,
int y,
int step)
int tx,ty,k;
for(k=
0;k<
8;k++)}
return;}
intmain()
return0;
}
深度優先搜尋應用 走迷宮
走迷宮問題是深度優先搜尋的乙個典型應用,通常迷宮的形狀如下 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函式用...
Problem L 搜尋基礎之馬走日
time limit 1 sec memory limit 128 mb submit 134 solved 91 submit status web board 馬在中國象棋以日字形規則移動。請編寫一段程式,給定n m大小的棋盤,以及馬的初始位置 x,y 要求不能重複經過棋盤上的同乙個點,計算馬可...