NOJ1043 演算法實驗三 跳馬

2021-10-25 05:21:14 字數 1129 閱讀 8680

描述

在西洋棋中,馬的走法與中國象棋類似,即俗話說的「馬走日」,下圖所示即西洋棋中馬(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列的迷宮。作為敢到木乃伊地下宮殿裡去探險的你,有沒有跟木乃伊抓迷藏的心理準備呵!遊戲在木乃伊所在的迷宮裡展開,任務就是盡快趕到出口。你一次只能走一步,而木乃伊可以走兩步,但木乃伊是很笨的,他總是先盡量跟...