象棋中的跳馬問題

2021-08-17 20:56:20 字數 974 閱讀 9286

有一張p*q的棋盤,並且棋盤中有障礙物(用來限制馬的行動,即中國象棋中的蹩馬腿)。有乙個棋子馬(走「日」字形路線),要從起始點走到終點。

輸入部分:

第一行輸入乙個整數n,表示有n組測試例項,每組測試資料第一行輸入兩個整數p和q,表示棋盤的大小(1<=p,q<=100),每組測試資料第二行輸入4個整數x1,y1,x2,y2,表示馬的起點和終點的座標。第三行輸入乙個整數m,表示圖中有多少障礙物,接著m行每行乙個座標,分別表示m個障礙物的位置座標。

輸出部分:

輸出馬從起始位置走到終點所需的最小步數。若馬不能走到終點,輸出「 can not reach!」

樣例輸入:

29 10

1 1 2 3

09 10

1 1 2 3

81 2

2 23 3

3 41 4

3 22 4

1 3樣例輸出

1can not reach!

#include using namespace std;

#define max 100

string ans[max];

int s[max][max];

int vis[max][max];

int dir[8][2]=;

int barr[4][2]=;

int x,y,x2,y2,i,q,p,n;

int t=0;

struct statea;

stringstream ss;

queueq;

int bfs(state st)

} q.pop();

} /*cout<<"can not reach!"<>n;

while(n--)

a.x=x;a.y=y;a.step=0;

bfs(a);

} for(i=0;icout

}

中國象棋中的跳馬問題

現在棋盤的大小不一定,由p,q給出,並且在棋盤中將出現障礙物 限制馬的行動,與象棋走法相同 第一行輸入n表示有n組測試資料。每組測試資料第一行輸入2個整數p,q,表示棋盤的大小 1 p,q 100 每組測試資料第二行輸入4個整數,表示馬的起點位置與終點位置。位置的取值範圍同p,q 第三行輸入m表示圖...

中國象棋中的跳馬問題 bfs

現在棋盤的大小不一定,由p,q給出,並且在棋盤中將出現障礙物 限制馬的行動,與象棋走法相同 第一行輸入n表示有n組測試資料。每組測試資料第一行輸入2個整數p,q,表示棋盤的大小 1 p,q 100 每組測試資料第二行輸入4個整數,表示馬的起點位置與終點位置。位置的取值範圍同p,q 第三行輸入m表示圖...

中國象棋中的跳馬問題(BFS)

題目描述 現在棋盤的大小不一定,由p,q給出,並且在棋盤中將出現障礙物 限制馬的行動,與象棋走法相同 輸入第一行輸入n表示有n組測試資料。每組測試資料第一行輸入2個整數p,q,表示棋盤的大小 1 p,q 100 每組測試資料第二行輸入4個整數,表示馬的起點位置與終點位置。位置的取值範圍同p,q 第三...