SP4176 KPURSUIT - A Knightly Pursuit
题目描述
在国际象棋中,棋子的移动方式依据其类型而定。游戏的目标是通过占据对方棋子的位置来捕获它们,并最终将对方的国王置于困境。
在我们的版本中,棋盘大小可变,上面只有两个棋子:一个白兵,它以每次一格的步伐不断向棋盘的顶行前进;一个黑骑士,它可以从当前所在位置向八个方向移动:向上或向下两格并且向左或向右一格,或者向上或向下一格并且向左或向右两格。骑士必须始终停留在棋盘上,任何越界的移动都是无效的。下图中,骑士的位置标记为 K,可能的移动位置用 1 到 8 标记。
```
. . . . . . .
. . 8 . 1 . .
. 7 . . . 2 .
. . . K . . .
. 6 . . . 3 .
. . 5 . 4 . .
. . . . . . .
```
游戏开始时由白兵首先移动,然后骑士和白兵轮流行动。骑士试图占领白兵所在的格子(即获胜)或者占领白兵正上方的格子(即形成僵局)。如果白兵到达棋盘顶行,则游戏立刻结束,骑士失败。
输入格式
第一行输入一正整数 $n$,表示需要分析的游戏局数。对于每局游戏,输入共六行:
- $r$,棋盘的行数。
- $c$,棋盘的列数。
- $pr$,白兵的起始行号。
- $pc$,白兵的起始列号。
- $kr$,黑骑士的起始行号。
- $kc$,黑骑士的起始列号。
输入中所有数字不超过 100。(感谢 Blue Mary 的提示)。
白兵和黑骑士的起始位置不同。第 1 行在棋盘底部,第 $r$ 行在棋盘顶部。第 1 列在棋盘左侧,第 $c$ 列在右侧。
输出格式
如果骑士可以获胜,输出骑士取得胜利所需的最少移动次数。如果骑士不能获胜,程序应判断它是否可以形成僵局;如果可以,输出形成僵局所需的最少移动次数。如果骑士既不能获胜也不能形成僵局,请计算骑士在白兵获胜前能够进行的移动次数。
**本翻译由 AI 自动生成**