SWUST OJ 2304 Lights Out
2016-04-09 18:44
246 查看
Description
Lights Out 是一款非常考验人智力的益智游戏,你必须要尝试关闭所有的灯。 游戏玩法:当你关掉或打开一个灯的时候,它周围(仅包括上下左右,斜对角的不算)的灯就会做相反的反应,譬如周围的灯本来是关掉的,当你关掉火或者打开中间的那个灯的时候,周围的灯就会自动变成打开,反之亦然。 在Lights Out 中,一共有5行6列的灯,每盏灯初始可能关着,可能开着,你的目的是必须要将所有的灯都关闭。
Input
第一行包含一个T,代表玩几次游戏 每次游戏,输入一个5行6列的矩阵,表示每个灯的初始状态,0代表一开始灯是关着的,1代表一开始灯是开着的。
Output
对于每次游戏,输出一个能关掉所有灯的方案,包含5行6列的矩阵,0代表按过这个灯的按钮,1代表没有按过这个灯的按钮。每组输出多输出一个空行。
Sample Input
Raw
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
Sample Output
Raw
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 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
【题意】如题所示
【分析】只需要暴力枚举每一行(列)的状态,然后根据第一行推出后面行的状态,最后判断是否满足条件即可。注意,是输出按的方案。
【AC代码】
#include <bits/stdc++.h> using namespace std; int maze[5][6]; int b[5][6]; int ans[5][6]; void press(int x,int y) { ans[x][y]=1; b[x][y] = 1-b[x][y]; if(x>0) b[x-1][y] = 1-b[x-1][y]; if(x<4) b[x+1][y] = 1-b[x+1][y]; if(y>0) b[x][y-1] = 1-b[x][y-1]; if(y<5) b[x][y+1] = 1-b[x][y+1]; } int main() { int T; scanf("%d",&T); while(T--) { for(int i=0; i<5; i++) { for(int j=0; j<6; j++) { scanf("%d",&maze[i][j]); } } for(int s=0;s<(1<<6);s++) { memset(ans,0,sizeof(ans)); for(int i=0; i<5; i++) { for(int j=0; j<6; j++) { b[i][j] = maze[i][j]; } } for(int i=0; i<6; i++) { if(s&(1<<i)) press(0,i); } for(int i=1; i<5; i++) { for(int j=0; j<6; j++) { if(b[i-1][j]==1)press(i,j); } } bool fuck=true; for(int i=0; i<6; i++) { if(b[4][i]==1)fuck=false; } if(fuck) { for(int i=0; i<5; i++) { for(int j=0; j<5; j++) { printf("%d ",ans[i][j]); } printf("%d\n",ans[i][5]); } break; } } printf("\n"); } return 0; }
相关文章推荐
- dq坐标系
- 问题杂烩(scrollTop/背景透明度动画)
- 《我编程, 我快乐------程序员职业发展之道》 Chad Fowler
- Android中的Service的使用详解
- Item 02:尽量以const,enum,inline 替换 #define
- 关于矩阵最通俗的解释-超级经典zz
- 关于printf()中可变参数的实现的理解
- HTML写的第一个邮箱登陆的界面
- 《Linux操作系统分析》之分析Linux内核如何装载和启动一个可执行程序
- Android 开发 上传用户头像到服务器的数据库再获取显示
- [iOS]File does not exist
- 【勘误清单】《机器学习》 周志华 北京: 清华大学出版社
- Unity3D中使用Leap Motion进行手势控制
- 201509-5 最佳文章
- Android表格自定义控件
- RSA加解密算法java实现(已添加分段加密算法处理)
- Android 编码规范
- Android退出时创建弹窗对话框
- Clover KextsToPatch 使用方法 2015.10.21
- iOS runtime——函数/使用方法/使用场景/示例