CSU 1224 ACM小組的古怪象棋

2021-08-04 18:24:39 字數 2230 閱讀 7267

description

acm小組的samsara和staginner對中國象棋特別感興趣,尤其對馬(可能是因為這個棋子的走法比較多吧)的使用進行深入研究。今天他們又在 構思乙個古怪的棋局:假如samsara只有乙個馬了,而staginner又只剩下乙個將,兩個棋子都在棋盤的一邊,馬不能出這一半棋盤的範圍,另外這 一半棋盤的大小很奇特(n行m列)。samsara想知道他的馬最少需要跳幾次才能吃掉staginner的將(我們假定其不會移動)。當然這個光榮的任 務就落在了會程式設計的你的身上了。

input

每組資料一行,分別為六個用空格分隔開的正整數n,m,x1,y1,x2,y2分別代表棋盤的大小n,m,以及將的座標和馬的座標。(1<=x1,x2<=n<=20,1<=y1,y2<=m<=20,將和馬的座標不相同)

output

輸出對應也有若干行,請輸出最少的移動步數,如果不能吃掉將則輸出「-1」(不包括引號)。

sample input

8 8 5 1 4 5

sample output

3 hint

source

csu monthly 2011 dec.

[分析]

乙個比較單純的廣度優先搜尋沒什麼特別要注意的。**寫的比較冗長,其實可以縮減很多。

[提前的後記]

原本就對搜尋不是很熟悉,做這一題的過程還一波三折。

首先是定義了乙個y1,報錯了。居然是因為math.h裡面有乙個double y1

vs2015是這樣的。還有一點很奇怪就是我沒有include。不多我include,可能queue裡面包含了math吧,瞎猜。

然後就是queue裡面居然沒有clear(),比較驚訝。感覺一直pop不優雅(哈哈哈

[**]

#include

#include

#include

using namespace std

;struct node

node;

int flag[25][25];

int n, m, x1, y3, x2, y2;

int finish = 0

;void bfs(int h, int g)

if (topp.x - 2 > 0 && topp.x - 2

<= n && topp.y - 1 > 0 && topp.y - 1

<= m && flag[topp.x - 2][topp.y - 1] != 1)

if (topp.x - 2 > 0 && topp.x - 2

<= n && topp.y + 1 > 0 && topp.y + 1

<= m && flag[topp.x - 2][topp.y + 1] != 1)

if (topp.x - 1 > 0 && topp.x - 1

<= n && topp.y + 2 > 0 && topp.y + 2

<= m && flag[topp.x - 1][topp.y + 2] != 1)

if (topp.x + 1 > 0 && topp.x + 1

<= n && topp.y + 2 > 0 && topp.y + 2

<= m && flag[topp.x + 1][topp.y + 2] != 1)

if (topp.x + 2 > 0 && topp.x + 2

<= n && topp.y + 1 > 0 && topp.y + 1

<= m && flag[topp.x + 2][topp.y + 1] != 1)

if (topp.x + 2 > 0 && topp.x + 2

<= n && topp.y - 1 > 0 && topp.y - 1

<= m && flag[topp.x + 2][topp.y - 1] != 1)

if (topp.x + 1 > 0 && topp.x + 1

<= n && topp.y - 2 > 0 && topp.y - 2

<= m && flag[topp.x + 1][topp.y - 2] != 1)

if (topp.x - 1 > 0 && topp.x - 1

<= n && topp.y - 2 > 0 && topp.y - 2

<= m && flag[topp.x - 1][topp.y - 2] != 1)

q.pop();

}}int main()

}

CSU 1224 ACM小組的古怪象棋(BFS)

time limit 1000 ms memory limit 131072 kb os windows acm小組的samsara和staginner對中國象棋特別感興趣,尤其對馬 可能是因為這個棋子的走法比較多吧 的使用進行深入研究。今天他們又在 構思乙個古怪的棋局 假如samsara只有乙個馬...

COJ 1224 ACM小組的古怪象棋

大概是以後一定要注意輸入輸出 比如 題目最小給的座標是從 1,1 開始的 那再去判斷是否陣列越界的時候 就需要特別注意了 道理我懂 然後因為這個問題以及在給輸入座標減1的時候 一不小心把m,n也算進去了 然後就炸了我乙個小時 雞今天打rank的第一道也是這樣 拿到題目我考慮到了行 卻沒有考慮到列 炸...

coj 1224 ACM小組的古怪象棋

acm小組的samsara和staginner對中國象棋特別感興趣,尤其對馬 可能是因為這個棋子的走法比較多吧 的使用進行深入研究。今天他們又在 構思乙個古怪的棋局 假如samsara只有乙個馬了,而staginner又只剩下乙個將,兩個棋子都在棋盤的一邊,馬不能出這一半棋盤的範圍,另外這 一半棋盤...