acm小組的samsara和staginner對中國象棋特別感興趣,尤其對馬(可能是因為這個棋子的走法比較多吧)的使用進行深入研究。今天他們又在 構思乙個古怪的棋局:假如samsara只有乙個馬了,而staginner又只剩下乙個將,兩個棋子都在棋盤的一邊,馬不能出這一半棋盤的範圍,另外這 一半棋盤的大小很奇特(n行m列)。samsara想知道他的馬最少需要跳幾次才能吃掉staginner的將(我們假定其不會移動)。當然這個光榮的任 務就落在了會程式設計的你的身上了。
每組資料一行,分別為六個用空格分隔開的正整數n,m,x1,y1,x2,y2分別代表棋盤的大小n,m,以及將的座標和馬的座標。(1<=x1,x2<=n<=20,1<=y1,y2<=m<=20,將和馬的座標不相同)
輸出對應也有若干行,請輸出最少的移動步數,如果不能吃掉將則輸出「-1」(不包括引號)。
8 8 5 1 4 5
3
solve()函式的search_path()因為放在了if語句後面wa十多次,應先更新棋盤狀態
#include#includeusing std::min;
const int max = 25;
const int inf = 5000;
int board[max][max]; //最少步數
int visit[max][max]; //0未訪問,1已訪問
int n = 0, m = 0, x1 = 0, y1 = 0, x2 = 0, y2 = 0;
//以點(x,y)為中心尋找周圍八個點,注意卡馬腳情況
void search_path(int x, int y)
void solve(int x, int y)
int main()
}board[x2][y2] = 0;
solve(x2, y2);
if (board[x1][y1] == inf)
printf("-1\n");
else
printf("%d\n", board[x1][y1]);
}return 0;
}
ACM小組的古怪象棋
acm小組的samsara和staginner對中國象棋特別感興趣,尤其對馬 可能是因為這個棋子的走法比較多吧 的使用進行深入研究。今天他們又在 構思乙個古怪的棋局 假如samsara只有乙個馬了,而staginner又只剩下乙個將,兩個棋子都在棋盤的一邊,馬不能出這一半棋盤的範圍,另外這 一半棋盤...
COJ 1224 ACM小組的古怪象棋
大概是以後一定要注意輸入輸出 比如 題目最小給的座標是從 1,1 開始的 那再去判斷是否陣列越界的時候 就需要特別注意了 道理我懂 然後因為這個問題以及在給輸入座標減1的時候 一不小心把m,n也算進去了 然後就炸了我乙個小時 雞今天打rank的第一道也是這樣 拿到題目我考慮到了行 卻沒有考慮到列 炸...
coj 1224 ACM小組的古怪象棋
acm小組的samsara和staginner對中國象棋特別感興趣,尤其對馬 可能是因為這個棋子的走法比較多吧 的使用進行深入研究。今天他們又在 構思乙個古怪的棋局 假如samsara只有乙個馬了,而staginner又只剩下乙個將,兩個棋子都在棋盤的一邊,馬不能出這一半棋盤的範圍,另外這 一半棋盤...