馬走日 深度優先搜尋

2021-10-22 22:44:29 字數 774 閱讀 1180

馬在中國象棋以日字形規則移動。

請編寫一段程式,給定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 要求不能重複經過棋盤上的同乙個點,計算馬可...