AT_arc012_3 [ARC012C] 五目並べチェッカー

题目描述

高桥君非常喜欢五目并。 五目并是一种在 $19 \times 19$ 的棋盘上,双方轮流各下一枚棋子,先将自己的棋子在纵向、横向或斜向上连成 $5$ 个或以上者获胜并结束游戏的规则。 游戏总是由黑方先手。 高桥君和朋友青木君下五目并时,不小心睡着了。 高桥君怀疑在他睡觉期间青木君做了手脚,因此想检查棋盘状态是否有异常。 请你编写程序,判断当前五目并棋盘状态是否正常。 这里的异常状态指的是: - 某一方已经满足胜利条件,但另一方还继续下了棋。 - 双方下子的数量出现了不可能的情况。 输入格式如下,从标准输入读取。 > $b_{1,1}\ b_{2,1}\ \ldots\ b_{19,1}$ > $b_{1,2}\ b_{2,2}\ \ldots\ b_{19,2}$ > $:$ > $:$ > $b_{1,19}\ b_{2,19}\ \ldots\ b_{19,19}$ - 输入共 $19$ 行。 - 第 $i$ 行第 $j$ 个字符 $b_{i,j}$ 表示棋盘第 $i$ 行第 $j$ 列的格子内容。 - $b_{i,j}$ 只可能是 `o`、`x` 或 `.` 三种字符。 - `o` 表示该格有黑子。 - `x` 表示该格有白子。 - `.` 表示该格为空。 如果棋盘状态正常,输出 `YES`,否则输出 `NO`。 输出到标准输出,末尾需换行。 ``` ................... ................... ................... ................... ....x......o....... ................... ................... .......o....o...... ................... ........x.......... ..............o.... ................... .......x........... ................... ................... ................... ................... ................... ................... ``` ``` YES ``` - 黑方下了 $4$ 子,白方下了 $3$ 子。 - (原描述有误,已修正。) ``` ................... ................... ................... ................... ....x......o....... ................... ................... .......o....o...... ................... ........x.......... ..............o.... ................... .......x........... ................... ................... .........o......... ................... ................... ................... ``` ``` NO ``` - 黑方下了 $5$ 子,白方下了 $3$ 子。 - 黑方多下一子,属于异常状态。 ``` ................... ................... ................... ................... ................... ................... ................... ................... ........ooooo...... .........xxxx...... ........x.......... ................... ................... ................... ................... ................... ................... ................... ................... ``` ``` NO ``` - 黑方下了 $5$ 子,白方下了 $5$ 子。 - 一方已经满足胜利条件时,游戏应立即结束,因此黑方满足胜利条件时还继续下棋属于异常状态。 - (原描述有误,已修正。) ``` ................... ................... ................... ................... ................... ................... ................... ................... ........ooooo...... .........xxxx...... ................... ................... ................... ................... ................... ................... ................... ................... ................... ``` ``` YES ``` - 黑方下了 $5$ 子,白方下了 $4$ 子。 - 黑方连成 $5$ 子获胜,属于正常状态。 ``` ................... ................... ................... ................... ................... ................... ................... ................... .........x......... ......oooooo....... ........xxxx....... ................... ................... ................... ................... ................... ................... ................... ................... ``` ``` YES ``` - 黑子连成 $6$ 个也属于正常。 - 例如黑子原本有 $2$ 个连在一起,中间隔一个空格,后面又有 $3$ 个连在一起,若在中间空格处下黑子,就会出现这种情况。 ``` ................... ................... ................... ................... ................... ................... ........x.......... ........x....x..... ...........x....... ...oooooooooo...... ................... ......x......x..... ....x......x....... .........x......... ................... ................... ................... ................... ................... ``` ``` NO ``` - 黑方下了 $10$ 子,白方下了 $9$ 子。 - 在黑子连成 $10$ 个之前,黑方已经获胜,游戏应已结束,因此属于异常状态。 ``` ................... ................... ................... ................... ................... ................... ................... ................... ................... ................... ................... ................... ................... ................... ................... ................... ................... ................... ................... ``` ``` YES ``` - 如果高桥君(黑方)一子未下就睡着了,这种情况也是正常的。

输入格式

输入共 $19$ 行,每行 $19$ 个字符,仅包含 `o`、`x`、`.`。

输出格式

如果棋盘状态正常,输出 `YES`,否则输出 `NO`,末尾换行。

说明/提示

无。 由 ChatGPT 4.1 翻译