poj 1222 EXTENDED LIGHTS OUT(位运算+枚举)
http://poj.org/problem?id=1222
题意:给一个确定的5*6放入矩阵。每一个格子都有一个开关和一盏灯,0表示灯没亮,1表示灯亮着。让你输出一个5*6的矩阵ans[i][j],ans[i][j] = 1表示按下开关,ans[i][j] = 0表示不按开关,使最后全部的灯都熄灭。
思路:与http://acm.hdu.edu.cn/showproblem.php?pid=1882类似。在这里找到一种方案输出就可以。但有一个疑惑不解。最后ans[ ][ ]输出的时候每一行里要倒着输出。。。
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <stack>
#include <vector>
#include <queue>
#define LL long long
#define _LL __int64
using namespace std;
const int INF = 0x3f3f3f3f; int map[7][7];
int sta[7],tmp[7];
int ans[7][7];
int bit[8] = {1,2,4,8,16,32,64,128}; void solve()
{
for(int i = 0; i < (1<<6); i++)
{
memcpy(tmp,sta,sizeof(sta));
memset(ans,0,sizeof(ans)); for(int j = 0; j < 6; j++)
{
if(bit[j]&i)
{
ans[0][j] = 1;
if(j > 0)
tmp[0] ^= bit[j-1];
if(j < 5)
tmp[0] ^= bit[j+1];
tmp[0] ^= bit[j];
tmp[1] ^= bit[j];
}
} for(int j = 1; j < 5; j++)
{
for(int k = 0; k < 6; k++)
{
if(bit[k]&tmp[j-1])
{
ans[j][k] = 1;
if(k > 0)
tmp[j] ^= bit[k-1];
if(k < 5)
tmp[j] ^= bit[k+1];
tmp[j] ^= bit[k];
tmp[j+1] ^= bit[k];
}
}
}
if(!tmp[4])
{
for(int i = 0; i < 5; i++)
{
for(int j = 5; j > 0; j--)
printf("%d ",ans[i][j]);
printf("%d\n",ans[i][0]);
}
break;
} }
} int main()
{
int test;
scanf("%d",&test);
int item = 1;
while(test--)
{
memset(sta,0,sizeof(sta));
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 6; j++)
{
scanf("%d",&map[i][j]);
if(map[i][j] == 0)
sta[i] <<= 1;
else sta[i] = (sta[i]<<1)+1;
}
}
printf("PUZZLE #%d\n",item++);
solve();
}
return 0; }
poj 1222 EXTENDED LIGHTS OUT(位运算+枚举)的更多相关文章
- POJ 1222 EXTENDED LIGHTS OUT(翻转+二维开关问题)
		
POJ 1222 EXTENDED LIGHTS OUT 今天真是完美的一天,这是我在poj上的100A,留个纪念,马上就要期中考试了,可能后面几周刷题就没这么快了,不管怎样,为下一个200A奋斗, ...
 - POJ 1222 EXTENDED LIGHTS OUT(高斯消元解异或方程组)
		
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 10835 Accepted: 6 ...
 - POJ 1222 EXTENDED LIGHTS OUT(反转)
		
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12616 Accepted: 8 ...
 - Poj 1222 EXTENDED LIGHTS OUT
		
题目大意:给你一个5*6的格子,每个格子中有灯(亮着1,暗着0),每次你可以把一个暗的点亮(或者亮的熄灭)然后它上下左右的灯也会跟着变化.最后让你把所有的灯熄灭,问你应该改变哪些灯. 首先我们可以发现 ...
 - POJ 1222 EXTENDED LIGHTS OUT(高斯消元)题解
		
题意:5*6的格子,你翻一个地方,那么这个地方和上下左右的格子都会翻面,要求把所有为1的格子翻成0,输出一个5*6的矩阵,把要翻的赋值1,不翻的0,每个格子只翻1次 思路:poj 1222 高斯消元详 ...
 - 【高斯消元】Poj 1222:EXTENDED LIGHTS OUT
		
Description In an extended version of the game Lights Out, is a puzzle with 5 rows of 6 buttons each ...
 - OpenJudge 2811 熄灯问题 / Poj 1222 EXTENDED LIGHTS OUT
		
1.链接地址: http://bailian.openjudge.cn/practice/2811 http://poj.org/problem?id=1222 2.题目: 总时间限制: 1000ms ...
 - POJ 1222 EXTENDED LIGHTS OUT(高斯消元)
		
[题目链接] http://poj.org/problem?id=1222 [题目大意] 给出一个6*5的矩阵,由0和1构成,要求将其全部变成0,每个格子和周围的四个格子联动,就是说,如果一个格子变了 ...
 - POJ 1222 EXTENDED LIGHTS OUT  (熄灯问题)
		
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8417 Accepted: 5441 Description In an ...
 
随机推荐
- android开发中遇到的bug
			
这种NullPointerException这么解决啊 Activity.dispatchTouchEvent 里try catch一下 参考:http://www.eoeandroid.com/th ...
 - C# 必应代码搜索
			
微软宣布推出必应代码搜索服务,暂时只支持 C# 语言,日后将支持更多代码语言. Visual Studio 用户安装必应搜索插件之后可使用该服务来简化编程任务.Visual Studio 与 MSDN ...
 - TDBXCommand   TDBXReader
			
TDBXCommand *cmd; cmd= FDBXConnection->CreateCommand(); cmd->CommandType=TDBXCommandTypes_DSS ...
 - ntpdate server时出错原因及解决
			
错误1.Server dropped: Strata too high 在ntp客户端运行ntpdate serverIP,出现no server suitable for synchronizati ...
 - Clean Code第三章<函数>
			
1.方法不要写太长,如果太长,抽取其中的逻辑到新的方法中 bad good 2.函数只做一件事 如果做了多件事,要在方法名里体现出来 3.每个函数一个抽象层级 4.函数名可以长一些,比长注释好 5.方 ...
 - HDU 2897 邂逅明下 (简单博弈,找规律)
			
邂逅明下 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
 - 个人用户安装SEP注意事项
			
一.安装时选择“非管控客户端” 二.安装时选择“自定义安装” 三.不要安装“应用程序与设备控制”,否则会拖慢开机 离线病毒库下载地址 http://www.symantec.com/securit ...
 - webconfig文件serviceHostingEnvironment节点出错的解决方法
			
在三点五和二版本的配置中可以出现这个节点,但是在4.0是没有的,所以如果框架是4.0的时候要除去这个节点,不然就会报以下错误: Configuration Error Description: An ...
 - IAP内购
			
IAPHelper.h // // IAPHelper.h // airplay // // Created by apple on 13-10-23. // Copyright (c) 2013年 ...
 - hdoj 5417 Victor and Machine
			
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5417 水题,一开始题目读错了做了好久,每次停工以后都是重新计时. 需要注意的是,先除后乘注意加括号 # ...