移動的騎士
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
3sample output80 0
7 0100
0 030 50
101 1
1 1
5題解:簡單的bfs280
//#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...