1194 : 黑白跳棋
- 时间限制Time Limit
- 60 秒Sec
- 内存限制Memory Limit
- 1024 兆MB
- 提交次数Submitted
- 30 次Times
- 通过次数Solved
- 4 次Times
标准评测 Standard
从标准输入读入,结果写到标准输出。评测将输出拆成 token,与标准答案逐项比较,不按整段逐字节比对。
Read from standard input and write to standard output. The judge splits the output into tokens and compares them with the official answer; it does not compare raw bytes.
| 比对Compare | token 相同即通过。中间的空格、制表符、换行可多可少。Matching tokens pass. Extra spaces, tabs, or newlines between them are ignored. |
|---|---|
| 不同则错Differs | token 个数或内容不同即错误。23 与 2 3、02 与 2、2.0 与 2 均视为不同。A different token count or value is wrong. 23 vs 2 3, 02 vs 2, and 2.0 vs 2 all differ. |
| 输入Input | 标准输入,格式见题面。Standard input; format as in the statement. |
| 输出Output | 标准输出。Standard output. |
| 时间与内存Time and memory | 记这一份程序的 CPU 时间和内存峰值。题目上的时间限制、内存限制就是这一份的上限。The record is this program’s CPU time and peak memory. The limits on the problem apply to this one run. |
题目描述Description
黑白跳棋是一款在4x4的棋盘上进行的双人游戏,一共有8枚棋子,棋子的一面是黑色,另一面是白色.
如下图所示,游戏开始时双方对坐,棋盘位于中央,黑方将4枚棋子黑面朝上、白方将4枚棋子白面朝上放置在棋盘两端.

通过猜拳确定好先后顺序,双方轮流移动自己的棋子,如果跳过对方的棋子就能把它翻转过来变为己方的棋子.
先把对方棋子全部变成己方棋子的一方获胜,或者不能移动棋子的一方输.
具体的移动棋子的规则如下:
每次只能移动一个棋子
棋子可以移动到水平或对角线8个方向上相邻的空格子中
如下图所示,白子可以移动到左、上、右、右下、下或左下的空格子中.

- 棋子可以跳过水平或对角线8个方向上紧邻的对方的棋子,但必须能落在该方向上后续相邻的空格子上,且只能跳过一个对方棋子,被跳过的对方棋子立刻翻转为己方棋子.
如下面左图所示,白子可以跳过右、右下或下方的黑子. 如下面右图所示,棋子一次跳跃不能跳过多个对方的棋子

- 每当移动己方棋子跳过对方一个棋子后,可以选择停止此轮行动或者继续按上述第3条规则跳过其他对方的棋子.
如下图所示,白子可以连续两次跳过黑子.

给出一个棋局以及接下来该谁行动,判断接下来行动的一方是否有必胜策略.
输入格式Input
包含不超过10000组测试数据.
每组测试数据的第一行包含一个整数,该整数为1表示接下来由黑方行动,为0表示接下来由白方行动.
接下来4行描述了棋局,其中
- “
.”表示该格子没有棋子 - “
#”表示该格子的棋子黑色面朝上 - “
+”表示该格子的棋子白色面朝上
数据保证每个棋局均包含8个棋子且至少有一个“#”和一个“+”.
输出格式Output
如果接下来行动的一方有必胜策略输出1,否则输出0.
样例Sample
出题Author
Staginner
来源Source
湖南省第十八届大学生计算机程序设计竞赛(HNCPC2022)
题目到此结束End of problem