关灯游戏(ACM/ICPC题)
有一个5*6的灯泡构成的矩阵,灯的开关规则是这样:当改变某盏灯的,状态时,这盏灯的上下左右相邻的灯的状态也随之改变。例如:
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
当按下2行3列的开关时,状态变为:
0 1 0 0 1 0
1 1 1 0 1 1
0 0 0 0 0 1
1 0 0 1 0 1
0 1 1 1 0 0
游戏的目的是对于任意给定的亮灭初始态,通过一系列动作关闭所有的灯。
可以注意到的是:
1.矩阵的状态与按开关的顺序无关
2.如果某个开关按下了两次,那么就相当于取消了第一次的操作,也就是说没有开关需要按超过1次
现在问题是:对于给定的初始状态,求出需要按哪些开关来完成游戏
原题在这里
http://acm.pku.edu.cn/JudgeOnline/showproblem?problem_id=1222
我不知道题目中所说的“must be pressed to solve the puzzle”是什么意思,难道每个初始状态都有唯一解?又如何证明这点?
希望大家说说解题的思路,这道题时限1000ms,