#P1138. Ships

    ID: 139 远端评测题 1000ms 10MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>Southwestern European Regional Contest 1996

Ships

本题没有可用的提交语言。

题目描述

大概每个上过学的人都知道这样一个游戏:两个对立的玩家在一张纸上放置一组船只,然后通过猜测对方船只的位置来尝试消灭它们。

在我们这个版本的游戏中,你的对手在一个矩形方格网格上分布了以下七种船只图案:

</p>

xx xx xx x x x

xx xx xx xxx xxx xxx xxxx

每个船只图案恰好覆盖四个方格。这些图案可以旋转,但不能镜像翻转。所有图案都确保完全放置在矩形的边界内,并且彼此不重叠,不过允许与其他图案或边界接触。

我们假设游戏正进行到中间阶段,已经有一些方格被揭开了。你会得到一个矩形方格网格,代表你目前对敌人船只位置的了解。每个方格用以下字符之一标记:

  1. 'x':表示该方格被船只覆盖;
  2. 'o':表示该方格没有被船只覆盖;
  3. '.':表示该方格尚未被揭开。

根据这些信息,你需要判断是否能够在最多猜错一次的情况下确定所有剩余的 'x' 方格,也就是说,在揭开所有 'x' 方格之前,你是否能够在揭开 '.' 方格时,遇到的 'o' 方格不超过一个。这意味着如果在猜错一次(遇到一个 'o' 方格)后,解决方案变得唯一,那么这种情况是被允许的。

输入格式

输入文件包含多个游戏局面。每个测试用例以一行开头,该行包含两个整数 hw,分别定义了游戏矩形的高度和宽度,其中 2 <= w, h <= 16。

接下来的 h 行,每行包含一个由 w 个字符组成的字符串。这些字符中的每一个都是 'x''o''.',具体取决于相应方格的状态。

每个游戏局面之间用一个空行分隔。输入文件以 w = 0 且 h = 0 的游戏局面结束,这个局面不需要处理。

输出格式

对于每个测试用例,你应该首先输出一行,包含游戏的编号,然后是一行,包含 yes.(如果你能够在最多猜错一次的情况下确定所有 'x' 方格)或 no.(如果你至少需要猜错两次才能确定所有 'x' 方格)。

在每个游戏局面的输出之后输出一个空行。

10 10
.x..x.....
oooooxoooo
oxooxxx...
xxoooooo..
xoooxooo..
ooxxxxoo..
oooooxxoox
ooooooxoox
ooooooooxx
oooooooooo

0 0
Game #1
yes.

来源

1996年西南欧洲区域竞赛