POJ 1657求西洋棋的格數

2021-06-18 06:46:54 字數 836 閱讀 8185

題意:

王、後、車、象的走子規則如下: 

寫乙個程式,給定起始位置和目標位置,計算王、後、車、象從起始位置走到目標位置所需的最少步數。

思路:王:橫、直、斜都可以走,但每步限走一格。

其步數為:max(x, y)

後:橫、直、斜都可以走,每步格數不受限制。

其步數為:

<1>可以直走或斜走到達(x == y || x == 0 || y == 0) 1

<2> 2

車:橫、豎均可以走,不能斜走,格數不限。 

其步數為

<1>可以直走到達(x == 0 || y == 0) 1

<2> 2

象:只能斜走,格數不限。

其步數為:

<1>斜走無法到達(abs(x - y) 為奇數) inf

<2>一步斜走可以到達(x == y) 1

<3> 2

還有一種特殊情況:起點與終點相同

#include#include#includeusing namespace std;

int main()

{ int n;

cin>>n;

while(n--)

{string a,b;

int x,y;

cin>>a>>b;

x=fabs(a[0]-b[0]);

y=fabs(a[1]-b[1]);

if(x+y==0)

{cout<<"0 0 0 0"<

poj 1657 西洋棋棋盤上的距離

題意 給定西洋棋上的乙個起點和乙個終點,問王 後 車 象分別最少走多少步能從起點到終點。思路 細心就可以。include include define max a,b a b a b int a,b,c,d,t int test1 int test2 int main printf d max ab...

馬的移動問題 西洋棋BFS

輸入包含多組測試資料。每組輸入由兩個方格組成,每個方格包含乙個小寫字母 a h 表示棋盤的列號,和乙個整數 1 8 表示棋盤的行號。對於每組輸入,輸出一行 to get from xx to yy takes n knight moves.e2 e4 a1 b2 b2 c3 a1 h8 a1 h7 ...

hdu1372 dfs搜尋之西洋棋的馬

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