关灯游戏(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,
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,
...全文
相关推荐
ACM-ICPC 历年竞赛 真题
ACM-ICPC 历年竞赛 真题,各大赛区真题详解,内含几大赛区各年度的真题
ACM/ICPC题集
《ACM/ICPC题集》是吉林大学计算机科学学院在2005年精心制作的一份宝贵资源,专门针对ACM(国际大学生程序设计竞赛)/ICPC(国际大学生程序设计竞赛)进行训练和学习。
果子合并(ACM/ICPC训练题)
果子合并(ACM/ICPC训练题):有四堆果子, 其数量分别是:10, 30, 15和100,试设计一种最佳方案,将果子合并为一堆,使得合并工作量最小。 注:规定合并两堆果子的工作量是这两堆果
ACM/ICPC 代码库
二、STL在ACM/ICPC中的应用STL是C++标准库的一部分,提供了丰富的数据结构和算法,极大地提高了编程效率。在ACM/ICPC中,以下STL组件尤为关键:1.
ACM/ICPC全球总决赛试题集锦
Contest,简称ACM/ICPC)全球总决赛的全部试题。



