#J10020. 绘制矩形
绘制矩形
题目描述
给定一个 行 列的网格。 记从上往下数第 行()、从左往右数第 列()的格子为 。 网格的状态由 个长度为 的字符串 表示:
- 如果 的第 个字符是
#,则格子 已经被涂成黑色。 - 如果 的第 个字符是
.,则格子 已经被涂成白色。 - 如果 的第 个字符是
?,则格子 尚未涂色。
高桥君希望将所有尚未涂色的格子涂成白色或黑色,使得所有的黑色格子最终构成一个矩形。
更确切地说,他希望存在一个整数四元组 (),满足:
- 对于网格中的每个格子 (),如果 且 ,则该格子为黑色;
- 否则,该格子为白色。
请判断是否能够实现这一目标。
输入格式
第一行包含两个正整数 和 —— 分别表示网格的行数和列数。
接下来 行,每行包含一个长度为 的字符串 ,表示网格的状态。
输出格式
如果可以将所有尚未涂色的格子涂色,并使黑色格子最终构成一个矩形,输出 Yes;否则输出 No。
样例输入 1
3 5
.#?#.
.?#?.
?...?
样例输出 1
Yes
样例输入 2
3 3
?##
#.#
##?
样例输出 2
No
样例输入 3
1 1
#
样例输出 3
Yes
说明
样例解释
-
对于第一个样例,初始网格如下(
?表示尚未涂色的格子):
通过将格子 、 和 涂成黑色,并将 和 涂成白色,黑色格子可以构成如下矩形:

因此输出
Yes。 -
对于第二个样例,要使所有黑色格子构成一个矩形,必须将格子 涂成黑色,但该格子已经被涂成了白色。因此无法实现目标,输出
No。
数据范围
- 对于所有测试点,保证 。
- 保证 是长度为 且仅包含
#,.,?的字符串。 - 保证网格中至少存在一个已经被涂成黑色的格子。
- 保证所有的输入数值均为整数。