码迷,mamicode.com
首页 > 其他好文 > 详细

题(枚举

时间:2018-11-09 19:29:09      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:点击   反转   矩阵   次方   思路   就是   方法   现在   要求   

poj1222
题意
有一个5 * 6的矩阵,每个位置表示灯,1表示灯亮,0表示灯灭。
然后如果选定位置i,j点击,则位置i,j和其上下左右的灯的状态都会反转。
现在要你求出一个5 * 6的矩阵,1表示这个灯被点击过,0表示没有。
要求这个矩阵能够使得原矩阵的灯全灭。
 
解析
1.每只灯只能被点击1次,因为点击2次相当于没点。
2.点击的灯如果在矩阵的角上或者边上,反转的灯就是邻近的两个或者三个,显然,要分开讨论;
3.解题方法是枚举,但不是一个个举,那要2的30次方:假设一排一排的按,当一排上的按钮按完后,开始按下一行,那么按的按钮的上方的按钮一定是亮着的,即按完的那一排中亮着的灯的下面一个按钮,就是下一排中要按的灯;
4.枚举的必要过程是if,是询问是否该解是正确解,而这之前,要把所有可能解无漏的伦一遍,这题不能寻2的30次方,做法是寻第一排的所有解,第一排确定后其他的就都确定了。
5.思路是这样,再看操作,这题还要用到位操作;
1>用char储存一行的灯的状态,这个char是抽象的,心里不存在那么一个字符,要的只是char储存的6个bit;
2>位运算中,要操作没有=1;=0;只能|1,&0,还有^1是可以取反,通过左移1来操作char中的某位;
3>可以char result[2]; int a=2; result[1]=a; 这样来给char赋位值;

题(枚举

标签:点击   反转   矩阵   次方   思路   就是   方法   现在   要求   

原文地址:https://www.cnblogs.com/ziyangbiog/p/9936187.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!