描述:
在西洋棋中,馬的走法與中國象棋類似,即俗話說的「馬走日」,下圖所示即西洋棋中馬(k)在一步能到達的格仔(其中黑色的格仔是能到達的位置)。
現有一200*200大小的西洋棋棋盤,棋盤中僅有乙個馬,給定馬的當前位置(s)和目標位置(t),求出馬最少需要多少跳才能從當前位置到達目標位置。
輸入:
本題包含多個測例。輸入資料的第一行有乙個整數n(1<=n<=1000),表示測例的個數,接下來的每一行有四個以空格分隔的整數,分別表示馬當前位置及目標位置的橫、縱座標c(x,y)和g(x,y)。座標由1開始。
輸出:
對於每個測例,在單獨的一行內輸出乙個整數,即馬從當前位置跳到目標位置最少的跳數。
輸入樣例:
21 1 2 1
1 5 5 1
輸出樣例:34
#include
#include
#include
using
namespace std;
int walk[8]
[2]=
;int maze[
200]
[200];
int step[
200*
200]
;int
make_new_place
(int row,
int col,
int type)
if(maze[row]
[col]!=0
)else
}void
bfs(queue<
int> q,
int end_r,
int end_c)}}
}}intmain()
}}for(i =
0; i < n; i++
)}
這道題目和之前的電子老鼠闖迷宮類似,只是擴充套件結點變成八個方向的「日」型。具體可以參見之前的部落格。
演算法練習 NOJ 1043 跳馬
時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述 在西洋棋中,馬的走法與中車象棋類似,即俗話說的 馬走日 下圖所示即西洋棋中馬 k 在一步能到達的格仔 其中黑色的格仔是能到達的位置 現有一200 200大小的西洋棋棋盤,棋盤中僅有乙個馬,給定馬的當前位置 s 和目標位置 t ...
NOJ1130 演算法實驗三 polygon
時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述在乙個周長為10000的圓上等距分布著n個點,即這n個點是乙個正n邊形的頂點。現在要另加m個點到圓上,新加的m個點可以任意選擇位置 可以與原有的點重合 然後將這n m個點中的一些點延圓周移動,最終使n m個點均勻分布,即在乙個正...
NOJ1147 演算法實驗三 木乃伊迷宮
時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述木乃伊地下宮殿是乙個6行6列的迷宮。作為敢到木乃伊地下宮殿裡去探險的你,有沒有跟木乃伊抓迷藏的心理準備呵!遊戲在木乃伊所在的迷宮裡展開,任務就是盡快趕到出口。你一次只能走一步,而木乃伊可以走兩步,但木乃伊是很笨的,他總是先盡量跟...