A 移動的騎士

2022-08-16 16:30:19 字數 1227 閱讀 5161

time limit: 1000/1000ms (c++/others) memory limit: 65536/65536kb (c++/others)

problem description

somurolov先生是乙個西洋棋高手,他聲稱在棋盤上將騎士棋子從一點移動到另外一點,沒有人比他快,你敢挑戰他嗎?

你的任務是程式設計計算出將乙個騎士棋子從一點移動到另外一點,最少需要移動的步數。顯而易見,這樣你就有贏得somurolov先生的機會。西洋棋中的騎士在棋盤上可移動的範圍如下圖:

首先輸入測試樣例的個數n。接下來是n組輸入資料,每組測試資料由三行整數組成:第一行是棋盤的邊長l

(4 <= l <= 300),整個棋盤的面積也就是

l*l;第二行和第三行分別是騎士棋子的初始位置和目標位置,表示為整數對形式*。保證棋子的初始和目標位置是棋盤上的合法位置。

output

對於每乙個輸入的測試樣例,請你算出騎士從初始位置移動到目標位置最小移動步數。如果初始位置和目標位置相同,那麼騎士移動的距離就是0。最後單獨一行輸出所求距離。

sample input

3

80 0

7 0100

0 030 50

101 1

1 1

sample output

5

280

#include#include

#include

using

namespace

std;

const

int maxn = 305

;bool mp[maxn][maxn]; //

表示當前點是否被走過

int sx, sy, tx, ty, l; //

s表示初始座標,t表示目標位置

int tox = ;

int toy = ;

//通過下標關聯,表示馬的八個走向

struct node ;

bool judge(node n)

intbfs()}}

return -1;}

intmain()

return0;

}

白騎士的移動 搜尋

小s第一次接觸西洋棋。他發現西洋棋中的knight棋子的移動方式和中國象棋中的馬類似,移動方式如圖所示。於是小s在棋盤上隨意擺上了一些棋子,其中包括一枚白騎士 一枚黑皇后 若干黑戰車和若干黑主教。小s想知道,如何能在避開黑戰車和黑主教的攻擊範圍的前提下,花費更少的步數吃掉黑皇后。輸入格式 輸入僅包含...

nenuoj 1364 移動的騎士

移動的騎士 time limit 1000ms memory limit 65536k total submit 263 accepted 163 description somurolov先生是乙個西洋棋高手,他聲稱在棋盤上將騎士棋子從一點移動到另外一點,沒有人比他快,你敢挑戰他嗎?你的任務是程式...

UVA439 騎士的移動

之所以這道題我要寫題解,是因為解題的過程中我採用了多種方法 不嚴謹的說,基本寫完了搜尋裡的所有技巧 bfs,ida a 雙向dfs。這個過程很值得品味參考,於我來說也是一次不可多得的學習。這道題的bfs思路是比較顯然的,實現上也不算特別難。include define debug printf ok...