#P1521. EXTENDED LIGHTS OUT

EXTENDED LIGHTS OUT

题目描述

在 Lights Out 游戏的扩展版本中,是一个有 55 行每行 66 个按钮的谜题(实际的谜题有 55 行每行 55 个按钮)。每个按钮都有一个灯。当按下按钮时,该按钮及其上方、下方、右侧和左侧的每个(最多四个)相邻按钮的灯状态会反转。 (如果打开,灯关闭;如果关闭,灯打开。)角落的按钮改变33个按钮的状态;边缘的按钮改变44个按钮的状态,其他按钮改变55个的状态。例如,如果按下下方左侧标记为XX的按钮,则显示将变为右侧的图像。 1

游戏的目标是,从显示器上的任何一组初始灯开始,按下按钮使显示器进入所有灯都关闭的状态。当相邻按钮被按下时,一个按钮的动作可以撤销另一个按钮的效果。例如,在下面的显示中,按下左侧显示中标记为 XX 的按钮会导致右侧显示。注意,第 22 行第 33 列和第 22 行第 55 列的按钮都改变了第 22 行第 44 列按钮的状态,所以最后,它的状态是不变的。

2

笔记:

  1. 按下按钮的顺序无关紧要。
  2. 如果第二次按下按钮,它会完全取消第一次按下的效果,因此不需要多次按下按钮。
  3. 如第二张图所示,按下第二排对应的按钮,可以关闭第一排的所有灯。通过在每一行重复这个过程,第一行中的所有灯 可能会出现四行。类似地,通过按下第 232、3 列中的按钮,可以关闭前 55 列中的所有灯。 编写一个程序来解决这个难题。

输入描述:

输入的第一行是一个正整数 TT,表示谜题个数。每个谜题将有55行,每行有66个数: 0011,由一个空格分隔。 00 表示最初灯关闭,而 1 表示最初灯打开。

输出描述:

对于每个谜题,输出: 第一行带有字符串:“PUZZLE #m”,其中 𝑚 表示第 𝑚个谜题。在该行之后,是一个类似拼图的显示(与输入格式相同)。在这种情况下,11 表示必须按下才能解谜的按钮,而 00 表示未按下的按钮。在类似拼图的输出显示中,每个 0 或 1 之间应该正好有一个空格。

示例1

2
0 1 1 0 1 0
1 0 0 1 1 1
0 0 1 0 0 1
1 0 0 1 0 1
0 1 1 1 0 0
0 0 1 0 1 0
1 0 1 0 1 1
0 0 1 0 1 1
1 0 1 1 0 0
0 1 0 1 0 0
PUZZLE #1
1 0 1 0 0 1
1 1 0 1 0 1
0 0 1 0 1 1
1 0 0 1 0 0
0 1 0 0 0 0
PUZZLE #2
1 0 0 1 1 1
1 1 0 0 0 0
0 0 0 1 0 0
1 1 0 1 0 1
1 0 1 1 0 1