Enum:EXTENDED LIGHTS OUT(POJ 1222)

题目大意:有一个5*6的灯组,按一盏灯会让其他上下左右4栈和他自己灯变为原来相反的状态,要怎么按才会把所有的灯都按灭?
3279翻版题目,不多说,另外这一题还可以用其他方法,比如DFS,BFS,不过这些都挺慢的,月还有一个特别厉害的方法,高斯消元法,等我以后再来写
#include <iostream>
#include <algorithm>
#include <functional> using namespace std; static int map[][], store[][], flip[][];
static int dirx[] = { -, , , };
static int diry[] = { , -, , }; int solve(void);
int get_light(const int, const int); int main(void)
{
int sum_of_martrix, ans, res;
scanf("%d", &sum_of_martrix); for (int k = ; k <= sum_of_martrix;k++)
{
ans = INT_MAX;
for (int i = ; i < ; i++)//Read Gragh
for (int j = ; j < ; j++)
scanf("%d", &map[i][j]); for (int i = ; i < << ; i++)
{
memset(flip, , sizeof(flip));
for (int j = ; j < ; j++)
flip[][ - j] = (i >> j) & ;
res = solve();
if (res < ans)
{
ans = res;
memcpy(store, flip, sizeof(flip));
}
}
printf("PUZZLE #%d\n", k);
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
printf("%d ", store[i][j]);
printf("\n");
}
}
return EXIT_SUCCESS;
} int solve(void)
{
int ans = ;
for (int i = ; i < ; i++)
for (int j = ; j < ; j++)
flip[i][j] = get_light(i - , j);//如果这一列的上一行是亮灯,那么必须按下这盏灯 for (int j = ; j < ; j++)
{
if (get_light(, j) == )//看最后一行的灯的情况是否全部灯都灭了
return INT_MAX;
} for (int i = ; i < ; i++)
for (int j = ; j < ; j++)
ans += flip[i][j];
return ans;
} int get_light(const int y, const int x)
{
int dx, dy, sum = map[y][x]; for (int i = ; i < ; i++)
{
dx = x + dirx[i]; dy = y + diry[i];
if ( <= dx && dx < && <= dy && dy < )
sum += flip[dy][dx];
}
return sum % ;
}

Enum:EXTENDED LIGHTS OUT(POJ 1222)的更多相关文章
- 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
题目大意:给你一个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(反转)
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12616 Accepted: 8 ...
- 【POJ】1222 EXTENDED LIGHTS OUT
[算法]高斯消元 [题解] 高斯消元经典题型:异或方程组 poj 1222 高斯消元详解 异或相当于相加后mod2 异或方程组就是把加减消元全部改为异或. 异或性质:00 11为假,01 10为真.与 ...
- POJ 1222 POJ 1830 POJ 1681 POJ 1753 POJ 3185 高斯消元求解一类开关问题
http://poj.org/problem?id=1222 http://poj.org/problem?id=1830 http://poj.org/problem?id=1681 http:// ...
- *POJ 1222 高斯消元
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9612 Accepted: 62 ...
- POJ 1222
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6196 Accepted: 40 ...
随机推荐
- ubuntu用apt-get安装memcache
转自:http://yangfutao2000.blog.163.com/blog/static/12162588201151635856858/ 先安装服务器端: apt-get install m ...
- CString
CString gray("Gray"); CString cat("Cat"); CString graycat = gray + cat; 与其用 sp ...
- Android 环境配置
一.开发环境配置 1.使用 eclipse 需要下载安装 Android SDK.Eclipse.ADT 插件. 也可以直接下载整合好的 ADT Bundle 包,下载地址: http://devel ...
- HTML5游戏设计与开发 小白7-9月的动态
好久没有更新博客了,最近在努力修炼提升逼格,当然了还有个恶心的毕业论文... 当然啦...在写这个论文的时候也就是为了提升下自身的技术,毕竟我的公司也不是游戏公司,SO 我决定开发个手机游戏.然后考虑 ...
- js DOM Element属性和方法整理
节点操作,属性 1. childNodes.children 这两个属性获取到的子节点会根据浏览器的不同而不同的,所以一定要判断下nodeType是否为1. childNodes获取到的是NodeLi ...
- JS替换函数
var id= id.replace(/\,/g, "','"); 记一下,
- SQL Server数据库邮件配置
一.数据库邮件介绍 数据库邮件是从SQL Server数据库引擎中发送电子邮件的企业解决方案,通过使用数据库邮件,数据库应用程序可以向用户发送电子邮件.邮件中可以包含查询结果,还可以包含来自网络中任何 ...
- XML文件数据操作
#region XML序列化文件和反序列化 /// <summary> /// 通用类的保存函数,可以将已经声明过可序列化的类以文件方式保存起来. /// 保存格式分为 XML明文式和 二 ...
- IO基础
流向: 输入流:从硬盘到java 程序 (读数据) 输出流:从java 到硬盘 (写数据) 数据类型: 字节流: {用记事本打开,不能读懂,用 字节流} 输入: InputStrea ...
- HDU 5074 Hatsune Miku(2014鞍山赛区现场赛E题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5074 解题报告:给出一个长度为n的序列,例如a1,a2,a3,a4......an,然后这个序列的美丽 ...