CXLOVE的第一篇博文,先来一个水题
开灯关灯问题,5*6的灯阵,将每一个位置上的状态看做一个变元,30个变元,列出30个异或方程,高斯消元解方程即可
N年前就做过这题,当时是位运算枚举+递推
从此cxlove的博客就正式开通了,欢迎大牛拍砖
/*
ID:cxlove
PROB:POJ 1222
HINT:高斯消元
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
using namespace std;
int a[31][31]; //系数矩阵
int ans[31];
void gauss(){
for(int i=0;i<30;i++){
int k=i;
for(;k<30;k++)
if(a[k][i]!=0)
break;
for(int j=0;j<=30;j++)
swap(a[i][j],a[k][j]);
for(int j=0;j<30;j++)
if(i!=j&&a[j][i])
for(int k=0;k<=30;k++)
a[j][k]=a[i][k]^a[j][k];
}
}
int main(){
int t,tt=0;
scanf("%d",&t);
while(t--){
memset(a,0,sizeof(a));
for(int i=0;i<30;i++){
scanf("%d",&a[i][30]);
ans[i]=0;
}
for(int i=0;i<30;i++){
a[i][i]=1;
if(i%6!=0)
a[i-1][i]=1;
if(i%6!=5)
a[i+1][i]=1;
if(i>5)
a[i-6][i]=1;
if(i<24)
a[i+6][i]=1;
}
gauss();
/*for(int i=0;i<30;i++){
for(int j=0;j<=30;j++)
printf("%d ",a[i][j]);
printf("\n");
}*/
for(int j=0;j<30;j++)
ans[j]=a[j][30];
printf("PUZZLE #%d\n",++tt);
for(int i=0;i<30;i++){
printf("%d",ans[i]);
if(i%6==5)
printf("\n");
else
printf(" ");
}
}
return 0;
}
分享到:
相关推荐
POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类
解决算法问题 poj1082, poj1150, poj1180, poj1201, poj1222,代码完成所给题目要求。
poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题...
poj分类poj分类poj分类poj分类
POJ第1861题源码 POJ第1861题源码 POJ第1861题源码
poj 3414解题报告poj 3414解题报告poj 3414解题报告poj 3414解题报告
回溯法的模板,关键是回溯的过程,以及在深搜过程中的方向问题
北大POJ1159-Palindrome 解题报告+AC代码
poj 1012解题报告poj 1012解题报告poj 1012解题报告poj 1012解题报告
poj 2329解题报告poj 2329解题报告poj 2329解题报告poj 2329解题报告
poj 1659解题报告poj 1659解题报告poj 1659解题报告poj 1659解题报告
poj 百练 题目分类 poj 百练 题目分类
POJ1083的代码,POJ1083的代码,POJ1083的代码
POJ1503解答 POJ1503解答,正确答案(已通过POJ)
C语言 poj npu 西工大 C语言Poj答案全完整打包,给有需要的朋友
poj 1001答案
POJ1048,加强版的约瑟夫问题 难度中等
北大POJ2002-Squares 解题报告+AC代码
POJ2968代码有用,欢迎下载,POJ代码
poj 1440解题报告 poj 1440解题报告 poj 1440解题报告 poj 1440解题报告