馬的移動問題 西洋棋BFS

2021-08-04 04:08:43 字數 1196 閱讀 8599

輸入包含多組測試資料。每組輸入由兩個方格組成,每個方格包含乙個小寫字母(a~h),表示棋盤的列號,和乙個整數(1~8),表示棋盤的行號。

對於每組輸入,輸出一行「to get from xx to yy takes n knight moves.」。

e2 e4

a1 b2

b2 c3

a1 h8

a1 h7

h8 a1

b1 c3

f6 f6

to get from e2 to e4 takes 2 knight moves.

to get from a1 to b2 takes 4 knight moves.

to get from b2 to c3 takes 2 knight moves.

to get from a1 to h8 takes 6 knight moves.

to get from a1 to h7 takes 5 knight moves.

to get from h8 to a1 takes 6 knight moves.

to get from b1 to c3 takes 1 knight moves.

to get from f6 to f6 takes 0 knight moves.

題意概括:西洋棋中,給出馬的起始位置和欲到達位置,求出到達最短的步數。
解題思路:這是一道簡單的廣搜問題,根據起始的位置,可以知道下一步可以走的八個位置,進行搜尋,中間判斷,不能走到原來的位置,還有就是不能跳到棋盤的外面去了,然後一步步搜尋,直到找到最終位置就可以了。
程式源**:

#include#includeint x,y,x1,y1;

int b[10][10];

int c[8][2]=;

int min=9999;

void fun(int x0,int y0,int step)

int x2,y2;

if(step>min)

return ;

for(int i=0;i<8;i++) }

return ;

}int main()

return 0;

}

西洋棋皇后問題

1 八皇后問題 2 求解思路 3 實現 include include object.h include linklist.h using namespace std using namespace mylib template class queuesolution public object s...

西洋棋馬走日(華科軟院上機)

問題描述 假設西洋棋棋盤有5 5共25個格仔。設計乙個程式,使棋子從初始位置 棋盤編號為1的位置 開始跳馬,能夠把棋盤的格仔全部都走一遍,每個格仔只允許走一次。要求 1 輸出乙個解 用二維陣列來記錄馬跳的過程,即 步號,棋盤格編號 左上角為第一步起點 2 求總共有多少解 注 西洋棋的棋子是在格仔中間...

hdu1372 dfs搜尋之西洋棋的馬

乙個8x8的西洋棋棋盤,你有乙個棋子 馬 算出棋子 馬 從某一格到另一格仔的最少步數。與普通dfs不同的是,你能走的路線不是上下左右,四個方向。而是由 日 字組成的8個方向。雖然是西洋棋的馬,但是其實和中國象棋的馬走法還是一樣的。include include includeusing namesp...