題意:
王、後、車、象的走子規則如下:
寫乙個程式,給定起始位置和目標位置,計算王、後、車、象從起始位置走到目標位置所需的最少步數。
思路:王:橫、直、斜都可以走,但每步限走一格。
其步數為: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...