亮灯

  题目大意:有一个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)的更多相关文章

  1. POJ 1222 EXTENDED LIGHTS OUT(翻转+二维开关问题)

    POJ 1222 EXTENDED LIGHTS OUT 今天真是完美的一天,这是我在poj上的100A,留个纪念,马上就要期中考试了,可能后面几周刷题就没这么快了,不管怎样,为下一个200A奋斗, ...

  2. POJ 1222 EXTENDED LIGHTS OUT(高斯消元解异或方程组)

    EXTENDED LIGHTS OUT Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 10835   Accepted: 6 ...

  3. Poj 1222 EXTENDED LIGHTS OUT

    题目大意:给你一个5*6的格子,每个格子中有灯(亮着1,暗着0),每次你可以把一个暗的点亮(或者亮的熄灭)然后它上下左右的灯也会跟着变化.最后让你把所有的灯熄灭,问你应该改变哪些灯. 首先我们可以发现 ...

  4. POJ 1222 EXTENDED LIGHTS OUT(高斯消元)题解

    题意:5*6的格子,你翻一个地方,那么这个地方和上下左右的格子都会翻面,要求把所有为1的格子翻成0,输出一个5*6的矩阵,把要翻的赋值1,不翻的0,每个格子只翻1次 思路:poj 1222 高斯消元详 ...

  5. POJ 1222 EXTENDED LIGHTS OUT(反转)

    EXTENDED LIGHTS OUT Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12616   Accepted: 8 ...

  6. 【POJ】1222 EXTENDED LIGHTS OUT

    [算法]高斯消元 [题解] 高斯消元经典题型:异或方程组 poj 1222 高斯消元详解 异或相当于相加后mod2 异或方程组就是把加减消元全部改为异或. 异或性质:00 11为假,01 10为真.与 ...

  7. 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:// ...

  8. *POJ 1222 高斯消元

    EXTENDED LIGHTS OUT Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9612   Accepted: 62 ...

  9. POJ 1222

    EXTENDED LIGHTS OUT Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6196   Accepted: 40 ...

随机推荐

  1. linuxMint install shuruma

    http://my.oschina.net/u/1446273/blog/306053 http://blog.sina.com.cn/s/blog_5d406a1b0101jlgn.html htt ...

  2. 在XP、Win7/8上如何右键进入命令行

    在Win7/8上特别简单,只需要在按下shift键后,再点击鼠标右键,即可进入命令行界面.

  3. 2015年12月03日 GitHub入门学习(五)Markdown语法简介

    Markdown一种标记语言,语法简洁,不像Word或Pages有大量排版.字体设置.常用的标记符号不超过十个.被大量写作爱好者.撰稿人.作家所青睐. 一.Markdown的优点 专注你的文字内容而不 ...

  4. HTML的内联元素换行问题

    一般a.span.label多个组合,需要换行时,使用以下CSS来处理: white-space: nowrap; display: inline-block;

  5. AD域服务器|两台DC无法进行复制同步

    注:本文由Colin撰写,版权所有!转载请注明原文地址,谢谢合作! 说明:前段时间公司两台域控出现了一些问题导致数据无法相互进行同步,DC之间也无法进行共享访问,网络用户无法通过计算机名映射的共享访问 ...

  6. plt和got

    最近在学习linux高级调试技术.下面就动态库连接这块做了一个实验 首先理解下plt是procedure linkage table,got是global offset table.got表中存放的是 ...

  7. js跳转页面

    <script type="text/javascript">  方法一: location.href = 'http://www.baidu.com'; 方法二: l ...

  8. Pro Mac 如何将英文文件夹汉化为中文

    1.新建一个英文名的文件夹. 2.打开文本编辑,文本编辑 -> 预置 -> 新建文稿 -> 格式,选上纯文本,关闭预置. 3.新建了一个txt文件,在里面输入要汉化的英文名(刚才新建 ...

  9. gcc 和g++区别

    gcc和g++都是GNU的一个编译器;这两者的区别:1.从源文件上看,对于文件后缀(扩展名)为.c的test.c文件,gcc会把它看成是C程序,而g++则会把它看成是C++程序;而对于文件后缀(扩展名 ...

  10. 学习ios(必看经典)牛人40天精通iOS开发的学习方法

    学习ios(必看经典)牛人40天精通iOS开发的学习方法 描述 这是一套从一个对iOS开发感兴趣的学员到iOS开发高手的系统.专业的课程体系.以培养企业开发真正需要的人才为目标,每个知识点都用案例来讲 ...