【poj1222-又一道开关问题】高斯消元求解异或方程组
2024-10-01 07:03:09
题意:给出一个5*6的图,每个灯泡有一个初始状态,1表示亮,0表示灭。每对一个灯泡操作时,会影响周围的灯泡改变亮灭,问如何操作可以使得所有灯泡都关掉。
题解:
这题和上一题几乎完全一样。。就是要输出解。。
然后我发现我回代的过程错了TAT 已修改上一题代码和模版
因为回代的过程合!并!了!
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std; const int N=;
int a[N][N],ans[N];
int dx[]={,,,-,};
int dy[]={,,,,-};
int idx(int x,int y){return (x-)*+y;} void output()
{
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n");
} void gauss()
{
int i,j,k,l;
memset(ans,,sizeof(ans));
for(i=,j=;i<= && j<=;j++)
{
for(k=i;k<=;k++)
if(a[k][j]) break;
if(a[k][j])
{
for(l=;l<=;l++) swap(a[i][l],a[k][l]);
for(l=;l<=;l++)//debug从1开始(回代)
{
if(l!=i && a[l][j])
for(k=;k<=;k++)
a[l][k]^=a[i][k];
}
i++;
}
}
for(int j=;j<i;j++) ans[j]=a[j][];
//自由元不是必须按的,则标记为0
} int main()
{
freopen("a.in","r",stdin);
int x,y,T,cas=;
scanf("%d",&T);
while(T--)
{
memset(a,,sizeof(a));
for(int i=;i<=;i++)
for(int j=;j<=;j++)
{
scanf("%d",&a[idx(i,j)][]);
for(int k=;k<=;k++)
{
x=i+dx[k];y=j+dy[k];
if(x> || y> || x< || y<) continue;
a[idx(i,j)][idx(x,y)]=;
}
}
for(int i=;i<=;i++) a[i][i]=;
gauss();
printf("PUZZLE #%d\n",++cas);
for(int i=;i<=;i++)
{
printf("%d ",ans[i]);
if(i%==) printf("\n");
}
}
return ;
}
最新文章
- AutoMapper不用任何配置就可以从dynamic(动态)对象映射或映射到dynamic对象。
- 开源(免费)三维 GIS(地形,游戏)
- [Locked] Closest Binary Search Tree Value &; Closest Binary Search Tree Value II
- PHP消息队列的实现方式与详解,值得一看
- 09、 在QQ音乐中查找七里香这首歌的精彩评论
- CSS 边框样式
- okvis代码解读
- re模块 模块
- Python练习-装饰器版-为什么我的用户总被锁定
- 检查用户输入信息是否完整(vb.net实现)
- AE Scene开发中的观察者模式
- 学习Maven之PropertiesMavenPlugin
- sublime 在Mac终端下设置快捷打开方式
- 网络编程----socketserver多并发实现、FTP上传多并发、udp协议套接字多并发
- 跟我一起写Makefile(五)
- Exception (3) Java exception handling best practices
- Linux命令应用大词典-第21章 LVM和RAID管理
- ACM学习历程—POJ1088 滑雪(dp &;&; 记忆化搜索)
- 【32.22%】【codeforces 602B】Approximating a Constant Range
- Qt使用com组件的一点小心得(使用Qt自带的工具dumpcpp生成.h和.cpp文件)