poj 1222 枚举(关灯游戏)

poj1222(枚举)熄灯游戏 EXTENDED LIGHTS OUT EXTENDED LIGHTS OUT Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11373   Accepted: 7273 Description In an extended version of the game Lights Out, is a pu 阅读详情

题意:一个5*6的灯方阵,0表示灯灭,1表示灯亮。按一盏灯其四邻域及其自身的颜色会发生改变,求出一种方法使得所有灯全灭。

思路:枚举第一行的6个灯,共64种情况。第一行确定后以后每行的关灯情况就确定了,最后判断最后一行的灯光是否全灭即可。

#include <stdio.h>
#include <string.h>
#include <math.h>
#define N 8
int S,T;
int s[N][N],t[N][N],res[N][N];//t是每个位置灯亮灭的变换次数
void myfill(int x){
	int i;
	for(i = 1;i<=6;i++){
		res[1][7-i] = x&1;
		x>>=1;
	}
}
void update(int d){
	int i;
	for(i = 1;i<=6;i++)
		if(res[d][i]){
			t[d][i]++;
			t[d-1][i]++;
			t[d+1][i]++;
			t[d][i-1]++;
			t[d][i+1]++;
		}
}
int finish(){
	int i;
	for(i = 1;i<=6;i++)
		if((s[5][i]+t[5][i])&1)
			return 0;
	return 1;
}
int main(){
	freopen("a.txt","r",stdin);
	scanf("%d",&T);
	for(S = 1;S<=T;S++){
		int i,j,k;
		for(i = 1;i<=5;i++)
			for(j = 1;j<=6;j++)
				scanf("%d",&s[i][j]);
		for(k = 0;k<(1<<6);k++){//枚举第一行
			memset(t,0,sizeof(t));
			memset(res,0,sizeof(res));
			myfill(k);//填充第一行
			update(1);
			for(i = 2;i<=5;i++){
				for(j = 1;j<=6;j++)
					if((s[i-1][j]+t[i-1][j])&1)
						res[i][j] = 1;
				update(i);//将按下灯的四邻域位置亮灭次数更新
			}
			if(finish())
				break;
		}
		printf("PUZZLE #%d\n",S);
		for(i = 1;i<=5;i++){
			for(j = 1;j<=6;j++)
				printf("%d ",res[i][j]);
			putchar('\n');
		}
	}
	return 0;
}


关灯游戏解题程序 关灯游戏(Lights Out)最强解题程序,包含多彩颜色情况解题,程序可以给出全部解法。 立即下载

相关推荐

minist手写数字的识别代码复现(pytorch 版本)

电脑系统:Windows 10语言环境:Python 3.8.18编译器:jupyter notebook深度学习环境:torch == 1.13.1+cu116显卡及显存: Tesla V100-PCIE-32GB卷积神经网络(Convolutional Neural Network,CNN或ConvNet)是一种 具有局部连接、权重共享等特性的深层前馈神经网络. 目前的卷积神经网络一般是由卷积层、汇聚层和全连接层交叉堆叠而成的 前馈神经网络。

2202_75521293的博客 2616

poj 1222 (枚举or高斯消元)

传送门:点击打开链接 题意:给你一个5*6的矩阵,每个点上都有一个灯,按下f[i][j]的按钮,f[i][j]位置的灯的状态会改变,它上下左右的灯的状态也会改变(开变关,关变开)。现在给出这个矩阵的初始状态,输出按下哪些按钮,使所有的灯都关闭。   分析: 解法一(穷举法):我们可以先二进制枚举第一行所有的翻转情况,才64种。之后第一行已经确定了,然后看第2行,如果第一行某个位置为1,那么...

常胜将军的博客 410

win10任务栏文件夹设置成竖形列表样式

win10任务栏文件夹设置成竖形列表样式

ftzchina的博客 7077

POJ 1222 (枚举+熄灯问题)

http://poj.org/problem?id=1222 题意:5x6个灯输出怎么熄灯才能都是灭的。0是灭,1是亮。 思路:首先要确定第一行的灯,随后剩下的灯随之确定,因为如果puzzle[r][c]是亮的,则要按下press[2][j]。 怎么确定第一行的灯呢,第一行有2^6种情况,依次枚举即可。 要点有三处:    1:对puzzle和press的初始化。

Since_natural_ran 931

Unity+Hybridclr发布WebGL记录

问题不多,比预想中的顺利,如果遇到问题建议先看Hybridclr的常见问题里面有没有解决方案,没遇到Hybridclr的报错,所以记录的问题里面没有Hybridclr相关的。导出设置里的压缩格式选择了Brotli,而服务器或浏览器不支持,据说是可以拓展服务器配置使支持Brotli,但是由于我本人是IIS小白,所以换了种压缩格式,在publishing Settings修改Compression Fromat为Gzip。3.在浏览器运行之后视图一直闪烁。,修改配置,这个网上很常见。

a598211757的博客 1037

BALM2深度解析 | 港大MARS实验室如何用点簇革新激光BA?

本文深度解析了港大MARS实验室提出的BALM2方案如何通过点簇技术革新激光BA(Bundle Adjustment)处理。BALM2将点云数据聚合为点簇,显著提升计算效率,实测显示其计算耗时仅为传统方法的1/20。文章详细介绍了点簇的核心原理、二阶优化方法及与传统方法的性能对比,展示了其在激光SLAM领域的突破性应用。

weixin_29212867的博客 152

poj1222(高斯消元)

/* translation: 有6*5的开关,每次按下一个开关,与之相邻的4个开关状态也会随之改变。给定开始状态,求使得所有开关为0的方法 solution: 高斯消元法 首先,假设在开始状态的基础上按下第二行第二列的开关,相当与在原来矩阵的基础上加上矩阵 0 1 0 0 ... 0 1 1 1 0 ... 0 0 1 0 0 ... 0 . . . . . . . . .

林伏案的博客 437

如何使用Github创建一个完全免费的个人网站

摘要: 本文详细介绍如何利用Github Pages免费搭建个人静态网站,适合零基础用户。首先需注册Github账号并创建特定命名的仓库(格式:用户名.github.io),然后通过网页或命令行创建index.html文件作为网站首页。完成后可通过"仓库设置- Pages"获取网站链接。文章还包含GitHub Desktop的安装使用、代码提交指南及常见问题自检方法,并说明即使Github被墙也可迁移至国内平台(如码云)。整个过程无需编程基础,仅需15分钟即可完成基础网站搭建。

安德洛夫 1514

POJ1222熄灯问题(枚举练习题)

这是一道基础的枚举算法题,它需要使用位运算来进行枚举,比较特殊,记录一下。

AmbitiousJun的博客 1045

全球建筑物提取数据集(免费下载):微软/GlobalMLBuildingFootprints

这个是GitHub上的开源数据集: https://github.com/microsoft/GlobalMLBuildingFootprints 介绍 必应地图正在世界各地发布开放式建筑足迹。我们从 2014 年到 2021 年间的 Bing Maps 图像中检测到了 7.77 亿座建筑物,包括 Maxar 和 Airbus 的图像。数据可在 ODbL 下免费下载和使用。该数据集补充了我们的其他版本。 包括的地区 执照 此数据由 Microsoft 根据Open Dat..

此星光明博客 6288

从原理到实战:深入解析 Synopsys VCS 仿真快照技术,提升验证效率

VCS Checkpoint 技术摘要 VCS Checkpoint 是 Synopsys VCS 提供的仿真状态快照功能,可将完整的仿真状态(寄存器、存储器、时钟、随机种子等)序列化保存。主要应用场景包括:跳过耗时初始化阶段、覆盖率驱动验证、Debug复现和UVM分阶段验证。核心原理是对仿真内核状态的完整序列化,需注意文件句柄等特殊对象需手动处理。 使用方式: 编译时添加 -checkpoint 选项 运行时通过 $save 系统任务或 +checkpoint 参数保存状态 通过 +restore 参数恢

元直的博客 248

poj 1222(高斯消元)

题目链接:http://poj.org/problem?id=1222 题目大意:开关经典问题,主要是高斯消元模板题,没有自由变元的高斯消元; 题目分析: 本题可以采用搜索来写,但很慢,所以使用高斯消元。高斯消元主要是消元后回带,由于本题没有自由变元,所以直接回带就好了。 代码如下: #include #include #include #include #include #

北门的智慧 767

【WRF-Chem工具】anthro_emiss 详解:生成人为排放数据

anthro_emiss 详解:生成人为排放数据

WW、forever的博客 2054

poj1222 熄灯问题 枚举(二进制)

题目大意: 有5×6的一个方格,里头有几个电灯泡子,你给一个电灯泡子关了或者开了,它上下左右的电灯泡子都会变到相反状态(包括自己),现在问了,按哪几个开关能让电灯泡子全部关闭,对就是这个意思,输出你所按得开关的矩阵,就完事了。 思路: 那么废话少说,让我们直插主题,怎么做,首先映入眼帘的想法就是把所有情况都枚举,但是这包括了2的30次方(二进制算的)种可能,一看就不行,那么我们用其他方法,遇到这种问题一定要研究局部,假如第一行按完了,第一行还有几个灯没有关,那么如何关掉这几个灯(第一行按完了,不按了),唯一

zwynb_的博客 529

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

算法入门(一) 枚举

算法入门(一) 枚举 关灯问题 (POJ1222) 1.题目描述: 2.解题分析: 可以看出当针对第一行中的开关灯的位置确定后,第一行的灯应该是处于有些灯是被熄灭,有些灯还是开启的。因为当第一行灯的开关按钮已经确定(已经确定哪些位置要按下按钮),这些第一行还亮着的灯只有通过按下第二行的灯来熄灭了!比如按完第一行的按钮后,第一行中第1,2,5列的灯还是开着的,那么要使...

May the Force be with you 405

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

POJ 1222 高斯消元法

CXLOVE的第一篇博文,先来一个水题 开灯关灯问题,5*6的灯阵,将每一个位置上的状态看做一个变元,30个变元,列出30个异或方程,高斯消元解方程即可 N年前就做过这题,当时是位运算枚举+递推 从此cxlove的博客就正式开通了,欢迎大牛拍砖 /* ID:cxlove PROB:POJ 1222 HINT:高斯消元 */ #include #include #include

窝不是爱酱,喵~~~~ 6218

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

poj 1222 EXTENDED LIGHTS OUT(高斯消元)

http://poj.org/problem?id=1222 先贴一个链接 http://blog.youkuaiyun.com/u013081425/article/details/24248247 枚举第一行的状态,进行试探,当最后一行都为0时,说明该方案可行。 另一种方法是高斯消元。 转载分析:这个游戏的名字叫做Lights Out。一个板子上面有MxN个按钮,按钮

3067

开关问题 POJ 3276 POJ 3279 POJ 1222

POJ 3276 题目链接:http://poj.org/problem?id=3276 题意:N个牛 ,B表示朝后, F表示朝前,每次可以选择连续的K个牛反转方向,问如何选择K,使得操作数M最少,K也应尽量小。 参考博客:http://www.cnblogs.com/neopenx/p/4071801.html ①从第一头牛开始,如果朝前,不管了。看下一头牛,如果朝后反转K长度区

Benjamin_Z的博客 961

POJ 1222 & 1681 & 1830 & 3185 开关灯问题 (高斯消元 & 异或方程组)

POJ 1222EXTENDED LIGHTS OUT 基本的开关灯问题.还保证唯一解. 我们把每一个灯泡当成一个状态xi,总共有30个,而且每个灯与其他灯的关系也很明显。所以我们就可以列30方程30个变元的方程组: xi = 1 * xi + 1 * x(i-1) + 1 * x(i+1) + 1 * x(i-6) + 1 * x(i+6) = 1 or 0 (mod 2) (...

weixin_30788731的博客 91

poj1222 开关问题

传送门:https://vjudge.net/problem/POJ-1222 题意:给你一个5行6列的0,1矩阵,代表着灯的亮灭,0灭,1亮。对一个灯进行开关转换时,它的上下左右灯都会转换。要让所有灯都灭(就是让它全为0)。问方案,不是最小操作数!!! 这题是从挑战程序设计竞赛来的。(可以先看较简单的一道开关问题:https://www.cnblogs.com/xiaobuxie/p/108...

weixin_30802273的博客 124

POJ 1222.EXTENDED LIGHTS OUT

这个看起来很像搜索类的题居然是一道普通枚举,这让我想起来了寒假计蒜客同样是开关灯的问题这类问题感觉有一定类似,以这道题为例,一盏灯摁两次就会回到原来的状态,所以只用摁一次,采用的思想是枚举第一行按钮的全部状态,根据这个状态首先开关灯,之后从第二行开始判断,如果上一行正上方的灯还是亮着的这个按钮就要按下,直到按完最后一行的按钮,这样所有灯的亮暗已经被确定了,遍历灯,如果全是0状态 就输出网上看的代码...

CuriousLiu的博客 455

(高斯消元)类关灯问题

简单解释: 对于高斯消元,最初的接触是行最简阶梯矩阵的化简。 我认为只分成两个部分:1:向前步骤 2:向后步骤 前者是往下推,后者是回代. In my opinion, pushing down is all about finding the pivot entry, determining the number of free entries, and determining ...

BigZong 955

POJ-1222EXTENDED LIGHTS OUT-位运算枚举模板

传送门:http://poj.org/problem?id=1222 题意:开关灯问题,一幅开关的灯中,给出一种操作,使得灯全关掉,(操作一个开关,相邻的灯也会改变) 思路:利用位运算枚举第一行; #include <iostream> #include <cstdio> #include <algorithm> #include <cst...

weixin_30298497的博客 143

POJ1222(高斯消元)

开关灯问题。 第一种方法就是去枚举第一行的状态(6*5)* (2^6),很快。 第二种方法是高斯消元,第一种的思路类似POJ 3279,下面说说高斯消元的思路: 记g[i][j]为原矩阵,x[ i ] [ j ]为i,j位置是否按,1是按,0是不按,也就是要求的答案,a[ i ] [ j ]为增广矩阵,设c[ i ] [ j ]为按下(i,j)后的...

bahuan1974的博客 210
上一篇: poj 3311 dp求解TSP
下一篇: poj 1657 国际象棋棋盘上的距离
dumeichen
博客等级 码龄13年 55粉丝 475原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值