欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF1150B.Tiling Challenge
Tiling Challenge
题目描述
有一天,Alice 在打扫她的地下室时,发现了一些非常奇特的东西:一组无限多的木制拼块!每个拼块由五个方格组成,其中四个方格分别与中间的第五个方格相邻:

在这些拼块旁边放着一块很大的正方形木板。木板被划分为 个格子,排列成 行 列。有些格子已经被单独的方块占据,剩下的格子是空的。Alice 开始思考,她是否可以用她找到的这些拼块完全填满木板。当然,每个拼块必须恰好覆盖木板上的五个不同的格子,任意两个拼块不能重叠,每个拼块必须完全放在木板内,不能有部分超出木板边界。然而,这块木板太大了,Alice 无法亲手完成拼接。你能帮她判断是否可以用这些拼块完全覆盖木板吗?
输入格式
输入的第一行包含一个整数 (),表示木板的大小。
接下来的 行描述木板。第 行()包含一个长度为 的字符串。其第 个字符()为 "." 表示第 行第 列的格子是空的,为 "#" 表示该格子已被占据。
你可以假设木板上至少有一个空格子。
输出格式
如果可以用 Alice 的拼块完全覆盖木板,输出 YES,否则输出 NO。你可以用任意大小写输出答案。
说明/提示
下图展示了示例木板及其拼接方式(如果存在拼接方案):

由 ChatGPT 4.1 翻译
样例
3
#.#
...
#.#
YES
4
##.#
#...
####
##.#
NO
5
#.###
....#
#....
###.#
#####
YES
5
#.###
....#
#....
....#
#..##
NO
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |