CF1150B.Tiling Challenge

传统题 时间 2000 ms 内存 256 MiB 4 尝试 1 已通过 1 标签

Tiling Challenge

题目描述

有一天,Alice 在打扫她的地下室时,发现了一些非常奇特的东西:一组无限多的木制拼块!每个拼块由五个方格组成,其中四个方格分别与中间的第五个方格相邻:

在这些拼块旁边放着一块很大的正方形木板。木板被划分为 n2n^2 个格子,排列成 nnnn 列。有些格子已经被单独的方块占据,剩下的格子是空的。Alice 开始思考,她是否可以用她找到的这些拼块完全填满木板。当然,每个拼块必须恰好覆盖木板上的五个不同的格子,任意两个拼块不能重叠,每个拼块必须完全放在木板内,不能有部分超出木板边界。然而,这块木板太大了,Alice 无法亲手完成拼接。你能帮她判断是否可以用这些拼块完全覆盖木板吗?

输入格式

输入的第一行包含一个整数 nn3n503 \leq n \leq 50),表示木板的大小。

接下来的 nn 行描述木板。第 ii 行(1in1 \leq i \leq n)包含一个长度为 nn 的字符串。其第 jj 个字符(1jn1 \leq j \leq n)为 "." 表示第 ii 行第 jj 列的格子是空的,为 "#" 表示该格子已被占据。

你可以假设木板上至少有一个空格子。

输出格式

如果可以用 Alice 的拼块完全覆盖木板,输出 YES,否则输出 NO。你可以用任意大小写输出答案。

说明/提示

下图展示了示例木板及其拼接方式(如果存在拼接方案):

由 ChatGPT 4.1 翻译

样例

3
#.#
...
#.#
YES
4
##.#
#...
####
##.#
NO
5
#.###
....#
#....
###.#
#####
YES
5
#.###
....#
#....
....#
#..##
NO

在线编程 IDE

建议全屏模式获得最佳体验