poj 1222 EXTENDED LIGHTS OUT 增广矩阵消元法

wxComboBox类的使用方法及示例代码 其中,parent表示该控件的父窗口,ID_COMBOBOX是该控件的ID,用于在事件处理函数中区分不同的控件,"默认选项"是下拉列表框的默认选项,options是wxArrayString类型的数组,用于存储下拉列表框中的选项,style可以指定wxComboBox的样式。wxComboBox是wxWidgets中的一个常用控件,它可以被用来显示一组在下拉列表框中的选项,并允许用户从中选择一个选项。上述就是wxComboBox类的基本使用方法,使用这个控件可以方便地实现下拉列表框的功能。 阅读详情
EXTENDED LIGHTS OUT
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 8682 Accepted: 5624

Description

In an extended version of the game Lights Out, is a puzzle with 5 rows of 6 buttons each (the actual puzzle has 5 rows of 5 buttons each). Each button has a light. When a button is pressed, that button and each of its (up to four) neighbors above, below, right and left, has the state of its light reversed. (If on, the light is turned off; if off, the light is turned on.) Buttons in the corners change the state of 3 buttons; buttons on an edge change the state of 4 buttons and other buttons change the state of 5. For example, if the buttons marked X on the left below were to be pressed,the display would change to the image on the right. 

The aim of the game is, starting from any initial set of lights on in the display, to press buttons to get the display to a state where all lights are off. When adjacent buttons are pressed, the action of one button can undo the effect of another. For instance, in the display below, pressing buttons marked X in the left display results in the right display.Note that the buttons in row 2 column 3 and row 2 column 5 both change the state of the button in row 2 column 4,so that, in the end, its state is unchanged. 

Note: 
1. It does not matter what order the buttons are pressed. 
2. If a button is pressed a second time, it exactly cancels the effect of the first press, so no button ever need be pressed more than once. 
3. As illustrated in the second diagram, all the lights in the first row may be turned off, by pressing the corresponding buttons in the second row. By repeating this process in each row, all the lights in the first 
four rows may be turned out. Similarly, by pressing buttons in columns 2, 3 ?, all lights in the first 5 columns may be turned off. 
Write a program to solve the puzzle.

Input

The first line of the input is a positive integer n which is the number of puzzles that follow. Each puzzle will be five lines, each of which has six 0 or 1 separated by one or more spaces. A 0 indicates that the light is off, while a 1 indicates that the light is on initially.

Output

For each puzzle, the output consists of a line with the string: "PUZZLE #m", where m is the index of the puzzle in the input file. Following that line, is a puzzle-like display (in the same format as the input) . In this case, 1's indicate buttons that must be pressed to solve the puzzle, while 0 indicate buttons, which are not pressed. There should be exactly one space between each 0 or 1 in the output puzzle-like display.

Sample Input

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

PUZZLE #1
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
PUZZLE #2
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

题意:一个5*6的矩阵,其中1代表灯亮,0代表灯灭,对于每一个开关布局,若b[i][j]==1,则a[i][j]与其相邻四个元素的值变化(0变1,1变0),现让你求出一个开关布局,使得每一个灯最后都是灭的。

记得以前写高代课作业的时候曾经写过一个消元法求答案的程序,没用结构体,一遇到分数就gg……这个题目作为消元法的入门题感觉着实有点难啊,它的运算不是加减乘除,是异或(虽然加法取摸也行)…没想到acm中将消元法的运算扩展了,更容易编码,但是构建方程组还是有点难想的……


这个题目有30个未知量,倒着想,最后状态全是0,对于答案矩阵c,0 xor c[i][j]  xor c[i-1][j] xor c[i+1][j] xor c[i][j-1] xor c[i][j+1] ==a[i][j],其中a[i][j]为题目给出的输入。所以,每个方程中,只有5项的系数为1,其余全为零。设b为增广矩阵,a[i][j]的系数离散化到矩阵中的第6*i-6+j行,将a[i][j]放到b[6*i-6+j][31]中,这样就能构建出增广矩阵了。系数矩阵是不变的,如下:


至于消元法,高等代数中解释的很详细了,虽然不知道线性代数中是怎么讲的,但是

肯定也是讲过方法的,这里就不赘述了。


代码:

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int a[35],x[40],map[10][10],b[35][35];  //b:系数矩阵的增广矩阵
    int i,j,k,m,n,t;

void gauss()
{
 int i,j,k;
 for(k=1;k<=30;k++)
   {for(i=k;i<=30;i++)
      if(b[i][k]==1)break;
    if(i!=k)
      for(j=1;j<=31;j++)swap(b[i][j],b[k][j]);
    for(i=1;i<=30;i++)
     if(i!=k && b[i][k]==1)
      for(j=1;j<=31;j++)b[i][j]=b[i][j]^b[k][j];    
   }
}


int main(int argc, char const *argv[])
{   
	
    scanf("%d",&t);
    for(int t1=1;t1<=t;t1++)
    { memset(a,0,sizeof(a));
      memset(x,0,sizeof(x));
      memset(b,0,sizeof(b));
      for(i=1;i<=5;i++)       //构建30*31的矩阵
      	for(j=1;j<=6;j++)
      		{scanf("%d",&map[i][j]);
      		 b[6*i-6+j][31]=map[i][j];
             b[6*i-6+j][6*i-6+j]=1;
             if(i>1)b[6*i-6+j][6*i-12+j]=1;
             if(i<=4)b[6*i-6+j][6*i+j]=1;
             if(j>1)b[6*i-6+j][6*i-6+j-1]=1;
             if(j<=5)b[6*i-6+j][6*i-6+j+1]=1; 
              }
      printf("PUZZLE #%d\n",t1);        
      gauss();
      for(i=1;i<=30;i++)
       if(i%6==0)printf("%d\n",b[i][31]);
        else printf("%d ",b[i][31]); 
     

    }
 	return 0;
}


10、边缘智能学习技术解析 本文深入解析了边缘智能学习技术的四大核心方法:联邦学习、DNN拆分、迁移学习和八卦学习。文章从人类大脑的学习机制出发,引出边缘级智能的重要性,并详细阐述各类技术的架构、优势、挑战及适用场景。通过对比分析,展示了不同技术在隐私性、效率、可扩展性等方面的特性,并探讨了未来融合多种技术、软硬件协同优化及应用领域拓展的发展趋势,为边缘智能在物联网与人工智能领域的应用提供了系统性参考。 阅读详情

相关推荐

EXCEL实现分层自定义比例随机抽样(图+文教程)

EXCEL实现分层自定义比例随机抽样(图+文教程) 单一字段分层自定义比例随机抽样 多字段分层自定义比例随机抽样 单一字段分层自定义比例随机抽样 首先数据源如下,我们想随机抽张三的金额数据10%、李四金额20%、王五5%、哈哈15%、李六10% 首先第一步,添加辅助列,随机数 =RAND() 对数据进行高级排序 升序、降序都可以 添加辅助列...

可乐联盟 2万+

线性代数(八) : 消元法和矩阵的初等变换

矩阵的初等变换

方橙 6395

国内用户稳定开通ChatGPT Plus会员的完整实操指南

ChatGPT作为当前最先进的AI对话模型,其技术原理基于Transformer架构和大规模语言预训练。通过深度学习技术,ChatGPT能够理解自然语言并生成高质量回复,在代码生成、文档分析等场景具有重要技术价值。对于需要高频使用的开发者而言,ChatGPT Plus会员提供了优先访问权和GPT-4模型支持等核心功能。在实际应用场景中,国内用户常面临支付限制和区域封锁等挑战。本文针对这些痛点,重点解析如何通过可靠的支付渠道和账号安全策略,实现稳定的会员开通方案,帮助用户突破技术使用壁垒,充分发挥AI助手在开

weixin_29042035的博客 952

第2课 矩阵消元

第2课 矩阵消元Elimination 消元法。⎧⎩⎨⎪⎪x+2y+z=23x+8y+z=124y+z=2 \begin{cases} x+2y+z=2 \\ 3x+8y+z =12\\ 4y+z=2 \end{cases} A=130284111 A=\begin{matrix} 1&2&1 \\ 3&8&1 \\ 0&4&1 \end{matrix} 消元法从第一行的第一个元素开始,称之为第一

blacksean的博客 864

用C#完成最小二乘法拟合平面方程,再计算点到面的距离

【代码】用C#完成最小二乘法拟合平面方程,再计算点到面的距离。

MechMaster 647

基于深度学习的UWB门禁检测

针对基于UWB技术智能门禁管理系统,由于测距误差或非视距原因导致门禁产生不合理动作的现象。分析如何采用基于深度学习的方法,通过对TWR测距数据、TWR监听数据、到达角度差(PDOA)、信道脉冲响应(CIR)等数据维度进行深度学习,利用 TensorFlow建立相应的推导模型,对卡片姿态进行更加精准可靠的检测,从而更好完成闸机开合控制。

tenth_quadrant的博客 2026

高斯消元法(2)——保姆级笔记

继上一个博文之后,我想了想还可以改进,我主要改动的是消元(这一部分在我看来是比较难的):上一个博文在消元的过程中,我消元的顺序是从左到右,然后再从上到下;这次我消元的过程是从上到下,然后再从左到右。!!

weixin_61057398的博客 822

大模型知识边界探索:LLM设计的极限测试

最优化理论是数学中的一个分支,主要研究如何从给定的一组约束条件下找到最优解。目标函数:定义了需要优化的指标,可以是最大化或最小化。约束条件:定义了在优化过程中需要满足的限制条件。无约束优化:目标函数和约束条件都不存在。有约束优化:目标函数存在,但存在约束条件。多目标优化:同时需要优化多个目标函数。极限测试(Ultimate Test)是一种系统性的方法,用于评估大型模型(如LLM)在极端条件下的性能和稳定性。极端数据分布:与模型训练数据分布显著不同的数据集。极端计算资源。

AI天才研究院 432

史上最易懂!MIT Linear Algebra线性代数:第二章-矩阵消元

矩阵消元法是线性代数中解决线性方程组的基础工具,通过系统的行变换,将复杂的方程组转化为易于求解的形式。其核心步骤包括构建增广矩阵、进行行简化、回代求解或直接读取解向量。高斯消元法适用于求解上三角矩阵,而高斯-约旦消元法则进一步简化至简化阶梯形矩阵,适用于直接读取解向量或求逆矩阵。关键点总结矩阵表示:将线性方程组表示为 ( A\mathbf{x} = \mathbf{b} ) 的形式,便于应用矩阵理论。行变换的等价性:行交换、行缩放、行加减等操作不改变方程组的解集。Rouché–Capelli 定理。

m0_69378371的博客 1637

【ComfyUI】【Nunchaku】【diffusers报错解决】秋叶整合包安装 Nunchaku 报错的解决方法

最近在折腾 AI 绘图时,我尝试在秋叶的 ComfyUI 整合包中安装 `ComfyUI-nunchaku` 插件(版本 0.3.3),结果启动后直接报错,提示无法从 `accelerate.utils.memory` 中导入 `clear_device_cache`,让我一度怀疑插件是否兼容。查阅了一堆 issue 和源码之后,总算找到了原因和解决方法。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1851

Cadence PCB 仿真宝典【目录】

欢迎大家来到《Cadence PCB 仿真宝典》该专栏包括【入门篇】【提升篇】【技巧篇】【疑难篇】四个部分,以供大家参考。大家直接点击大纲中的蓝色标题即可轻松传送。

fydar的博客 3267

矩阵消元法

消元法(elimination)也是计算机程序解方程的方法,消元法如果奏效了,方程就解出来了。

LJM1200的博客 5326

U盘无法识别?一条命令轻松修复,数据不丢失

问题描述 U盘经常会遇到提示:无法识别或者需要重新格式等问题,例如下图 修复方法 WIN+R输入cmd 输入chkdsk+盘符:/F /F是修复的意思 更多内容 U盘无法识别或提示需要格式化?别急着格式化丢失数据!本文教你使用Windows自带的命令快速修复U盘文件系统错误,简单几步就能解决问题,让你的U盘恢复正常使用💾✨

XiaoqiangClub的博客 637

poj 1222 EXTENDED LIGHTS OUT 【高斯消元】

EXTENDED LIGHTS OUT Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7817   Accepted: 5087 Description In an extended version of the game Lights Out, is a p

世界很大 649

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

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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

POJ 1222 EXTENDED LIGHTS OUT

题目原文     高斯消元,这是我一直很纠结的,上学期一直不敢写,主要是觉得这个模拟太麻烦了,很烦,也没有看看别人怎么写的。但是这学期校赛的时候,我竟然遇到的第一道题目就是高斯消元,当时就怒了,我们队三人没有一个会写的,靠!当时那个无语啊,血都气的吐出来了。比赛后那天晚上,连夜写了一个高斯消元的模板出来,第二天狂AC五道题,还是不能解恨。     这是一道经典的高斯消元的开关问题,具体怎么写的

蛤蛤~ 585

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

POJ1222 EXTENDED LIGHTS OUT 高斯消元

题目链接:http://poj.org/problem?id=1222 题目大意:给你一个5*6 的矩阵,矩阵里每一个单元都有一个灯和一个开关,如果按下此开关,那么开关所在位置的那个灯和开关前后左右的灯的状态都会改变(即由亮到不亮或由不亮到亮)。给你一个初始的灯的状态,问怎样控制每一个开关使得所有的灯最后全部熄灭(此题保证有唯一解)。 分析:高斯消元。很显然每个灯最多只需要按1

AC_Gibson的专栏 552

poj1222 EXTENDED LIGHTS OUT (高斯消元)

题目链接:http://poj.org/problem?id=1222 一,题意: 有一个5 * 6 的矩阵 矩阵里面每一个格子都有一个开关,开关只有两种状态,开与关。 我们用1表示开,0表示关,每一个开关的状态变化都会影起其上下左右开关的变化。 我们开始给出矩阵中所有开关的初始状态,问改变多少个开关的状态能使得所有开关变成关。 我们用1表示改变,用0表示不变。输出所有开关改变状态。

漩涡梦幻 625

POJ 1222 EXTENDED LIGHTS OUT (高斯消元)

EXTENDED LIGHTS OUT Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8364   Accepted: 5406 Description In an extended version of the game Lights Out, is a puzzl

滴水穿石,慢慢积累,总会有成果 521

[Gauss]POJ1222 EXTENDED LIGHTS OUT

题意:给一个5*6的矩阵 1代表该位置的灯亮着, 0代表该位置的灯没亮 按某个位置的开关,可以同时改变 该位置 以及 该位置上方、下方、左方、右方, 共五个位置的灯的开、关(1->0, 0->1) 问能否将所有的灯关闭 若能 输出需要按哪些地方; 不能输出-1 高斯消元的入门题。 每个位置可以列出一个方程, 列出增广矩阵:   每个位置可以形成增广矩阵的一行...

aicheng4794的博客 165

[ POJ ][ 高斯消元 ] 1222 EXTENDED LIGHTS OUT

EXTENDED LIGHTS OUT Time Limit:1000MS Memory Limit:10000K Total Submissions:10354 Accepted:6667 Description In an extended version of the game Lights Out, is a...

diaojiu3307的博客 213

POJ1222_EXTENDED LIGHTS OUT_高斯消元法

题目大意: 5 * 6 的矩阵,有些灯是关的有些是开的,开关一灯,会触发上下左右四盏灯的开关,输出一种方案使所有灯都关闭。 思路: 逆向求解有全为关的状态到达当时状态的方法。 建立异或方程组的(5 * 6) * (5 * 6 + 1)规模的增广矩阵。最后一列常量为目标状态。对每一盏灯建立一个方程,每一盏灯为一个变量,如对坐标为(x, y)的灯,第(x * 6 + y)的方程中,对于自身变量

Sangria's Blog 448

EXTENDED LIGHTS OUT-POJ1222(高斯消元)

EXTENDED LIGHTS OUT-POJ1222 T组输入,只有0和1,指定为大小5×6的矩阵,选择一个位置,自身和上下左右位置上的状态均改变(^=1)。输出任意一种将所有元素变成0的解。 可枚举也可高斯消元,但这里对解的要求为任意一种,可不用枚举,这题介绍高斯消元的方法。 (解集要求为最少操作数,须用枚举法更新最优解的升级版:POJ3279) 前置知识:高斯消元 一、将初态矩阵看作一30维的向量S =(a0,a1,a2,…,a29),则末态矩阵对应就是E =(0,0,0,…,0)。 二、对于位

自伤无色的博客 249

EXTENDED LIGHTS OUT POJ - 1222

题意: 按下一个按钮,会不小心碰到与其邻接的按钮,每个按钮对应着一个灯泡, 现在给出灯泡情况,问如果操作可以将灯泡全部关掉 思路: 高斯消元基础题 消除到最后进行回溯求解 将灯泡进行编号,(x1,x2,....xn)b表示开关的解 矩阵每行表示该灯泡与几号开关有关的方程 #include #include #include #include using namespace std;

a7f650ebd327889c的博客 392

poj 1222 EXTENDED LIGHTS OUT //高斯消元

整理一下这块而已 #include #include #include #include #include using namespace std; #define MAX_VAR 110 //geshu #define MAX_EQU 110 //位数 #define M

hqd_acm的专栏 1249

POJ1222 EXTENDED LIGHTS OUT【高斯消元】

题目大意: 有一个 5*6 的矩阵,每个位置上都有一盏灯和一个开关,矩阵中 1 表示灯亮,0 表 示灯灭。每当按下一个位置上的开关,这个位置上的灯和周围上、下、左、右共 5 个位置的灯状态都会翻转。问:在这个 5*6 的矩阵中,按下哪些位置上的按钮,可 以把整个矩阵变为全灭状态。输出方案矩阵,矩阵中 1 表示按下开关, 0 表示没有 按下开关。 解题思路: 参考博文:http://blog.youkuaiyun.com/shiren_Bod/article/details/5766907 上的解题

程序员充电站(itcharge) 972

POJ 1222 EXTENDED LIGHTS OUT(高斯消元)

高斯消元

代码改变世界 1820

POJ 1222 EXTENDED LIGHTS OUT

高斯消元 题意: 给你一个5*6的矩阵,每个点上都有一个灯,按下f[i][j]的按钮,f[i][j]位置的灯的状态会改变,它上下左右的灯的状态也会改变(开变关,关变开)。 现在给出这个矩阵的初始状态,输出按下哪些按钮,使所有的灯都关闭。 分析: 每个位置可以形成增广矩阵的一行,每行有30个系数分别代表0 -29号灯,将可以影响该位置变换的位置(自己,上,下,左,右)置1,其余的置0;这样

一条单行线 372
上一篇: poj 3090 Visible Lattice Points 欧拉函数打表求和
下一篇: hdu 4544 优先队列
ctrss
博客等级 码龄11年 1粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值