nenuoj 1364 移動的騎士

2021-08-16 07:28:26 字數 1379 閱讀 5765

移動的騎士

time limit:1000ms  memory limit:65536k

total submit:263 accepted:163

description

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

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

input

首先輸入測試樣例的個數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

題解:簡單的bfs

//#include#include#include#include#include#include#includeusing namespace std;

bool vis[300][300];

int rowmove=;

int linemove=;

bool judge;

int mmp=0;

struct node

path[10000];

void bfs(int l,int x1,int y1,int x2,int y2)

mmp=sum;

return;

}rear++;

}frontt++;

}}int main()

{ int n;

cin>>n;

while(n--)

{judge=0;

memset(vis,0,sizeof(vis));

int l,x1,y1,x2,y2;

cin>>l>>x1>>y1>>x2>>y2;

if(x1==x2&&y1==y2)

{cout<

A 移動的騎士

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

白騎士的移動 搜尋

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

UVA439 騎士的移動

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