编程题
关灯游戏增强版 ## 来源 Greater New York 2002 (ZOJ1354, POJ1222) ## 题目描述 5行6列按钮组成的矩阵,每个按钮下面有一盏灯。当按下一个按钮,该按钮和相邻4个按钮(上、下、左、右)的灯状态变反(如果是开着的,则关闭;如果是关闭的,则开起)。例如,在下图(a)中,如果作了"X"标记的按钮按下后,则各灯的状态如下图(b)所示,在该图中,阴影表示灯是开着的。游戏的目的是,从给定的初始状态出发,按下某些按钮使得所有灯都关闭。编写程序实现这一目的。 ![图片描述](https://doc.shiyanlou.com/courses/uid1791927-20220313-1647166395669) 注意,按下一个按钮可能会取消另一个按钮按下的效果。如下图所示,按下第2行第3列和第5列的按钮后,第2行第4列的按钮的灯,由关变成开,然后又由开变成关。 ![图片描述](https://doc.shiyanlou.com/courses/uid1791927-20220313-1647166420480) 另外请注意: (1) 按钮按下的顺序不会影响最终的效果。 (2) 如果一个按钮按下两次,则第2次按下的效果只是取消了第1次按钮按下的效果,没有意义,所有没有哪个按钮需要按下2次。 (3) 要使得第1行的灯全关闭,只需要按下第2行中对应的按钮即可,重复这一过程,可以使得前面4行的灯全部关闭。同理,通过按下第2~6列的按钮,可以使得1~5列灯全部关闭。 ## 输入描述 输入文件第1行为正整数n,表示测试数据的个数。每个测试数据占5行,每行有6个整数,这些整数用空格隔开,取值为0或1,0表示初始时灯是关闭的,1表示初始时灯是开着的。 ## 输出描述 对每个测试数据,首先输出一行:"PUZZLE #m",其中m为测试数据的序号。然后输出5行,每行为6个整数,用空格隔开,取值也为0或1。这里的0和1含义跟上面的含义不一样,1表示该按钮要按下,0表示不按下。 ## 样例输入 ```txt 1 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 ``` ## 样例输出 ```txt 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 ```
查看答案
赣ICP备20007335号-2