Logo HelloWorld信息学奥赛题库

少儿编程

时间限制:1 s 空间限制:512 MB

#4272. 关灯问题

统计

题目描述

有一个 $n \times n$ 的方阵,每个位置上都有一盏灯,这些灯有亮有暗。每次,可以选择一个格子,选定后它与它相邻的格子的亮暗状态都会发生改变,在此处,相邻指的是 4-相邻 (有公共边),如下图:

一些选择格子的操作

易知,如果某一个格子被选择了偶 (奇) 数次,效果等价于它没有被选择 (被选择),因此,我们限制每个格子至多被选择 $1$ 次

给定初始方阵中每盏灯的亮暗情况,请输出一个使所有灯都熄灭的方案,格式见输出格式。

如果有多个方案,输出任意一个方案,如果无解,输出 No solution

输入格式

第一行包含一个正整数 $n$,表示方阵的行数和列数。

接下来的 $n$ 行,每行包含一个长度为 $n$ 的字符串,其中第 $i$ 行的第 $j$ 个字符为 #,如果原来灯阵中第 $i$ 行第 $j$ 列的灯是亮的,否则为 .

输出格式

如果有解,则输出 $n$ 行,每行一个长度为 $n$ 的字符串,其中第 $i$ 行的第 $j$ 个字符为 #,如果需要选择灯阵中第 $i$ 行第 $j$ 列的格子,否则为 .

如果无解,输出一行,为 No solution

样例 1

input

4
####
#..#
#..#
####

output

#..#
....
....
#..#

样例 2

input

5
#....
.....
.....
.....
.....

output

No solution

样例 3

input

5
.###.
.##.#
#...#
##..#
#####

output

...#.
.#..#
#....
.....
.#..#

见附加文件下的 ex_light4.inex_light4.out

该组样例的数据范围同第 4 个 Subtask,且有唯一解

注意:样例 1 和样例 3 存在不唯一的解,所以和样例输出不相同并不代表答案错误,评测时将使用 Special Judge。

数据范围与提示

对于所有数据,满足 $2 \leq n \leq 1000$。

Subtask # 分值 $n$ 其它性质
1 $8$ $\leq 5$
2 $13$ $\leq 20$
3 $9$ $\leq 24$ 保证初始所有的灯都是亮的
4 $22$ $\leq 100$
5 $18$ $\leq 300$ 保证有且仅有一解 (旋转、翻转被认为是不同的解)
6 $30$ $\leq 1000$