博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1222 EXTENDED LIGHTS OUT(高斯消元)题解
阅读量:6317 次
发布时间:2019-06-22

本文共 1913 字,大约阅读时间需要 6 分钟。

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

思路:

代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define eps 1e-9typedef long long ll;const int maxn = 1e4 + 10;const int seed = 131;const ll MOD = 1e9 + 7;const int INF = 0x3f3f3f3f;using namespace std;int a[35][35], x[35], Case = 1;int equ, var;int free_num,free_x[35];int Gauss(){ int max_r, col, k; free_num = 0; equ = var = 30; for(k = 0, col = 0; k < equ && col < var; k++, col++){ max_r = k; for(int i = k + 1; i < equ; i++){ if(abs(a[i][col]) > abs(a[max_r][col])) max_r = i; } if(a[max_r][col] == 0){ k--; free_x[free_num++] = col; continue; } if(max_r != k){ for(int j = col; j < var + 1; j++){ swap(a[k][j], a[max_r][j]); } } for(int i = k + 1; i < equ; i++){ if(a[i][col] != 0){ for(int j = col; j < var + 1; j++){ a[i][j] ^= a[k][j]; } } } } for(int i = k; i < equ; i++){ if(a[i][col] != 0) return -1; } if(k < var) return var - k; for(int i = var - 1; i >= 0; i--){ x[i] = a[i][var]; for(int j = i + 1; j < var; j++){ x[i] ^= (a[i][j] & x[j]); } } return 0;}int pos(int i, int j){ return i * 6 + j;}void solve(){ int u; memset(a, 0, sizeof(a)); memset(x, 0, sizeof(x)); for(int i = 0; i < 5; i++){ for(int j = 0; j < 6; j++){ if(i > 0) a[pos(i - 1, j)][pos(i, j)] = 1; if(i < 4) a[pos(i + 1, j)][pos(i, j)] = 1; if(j > 0) a[pos(i, j - 1)][pos(i, j)] = 1; if(j < 5) a[pos(i, j + 1)][pos(i, j)] = 1; a[pos(i, j)][pos(i, j)] = 1; int u; scanf("%d", &u); a[pos(i, j)][30] = u; } } Gauss(); printf("PUZZLE #%d\n", Case++); for(int i = 0; i < 5; i++){ for(int j = 0; j < 6; j++){ if(j != 0) printf(" "); printf("%d", x[pos(i, j)]); } printf("\n"); }}int main(){ int T; scanf("%d", &T); while(T--){ solve(); } return 0;}

 

转载于:https://www.cnblogs.com/KirinSB/p/9652176.html

你可能感兴趣的文章
Linux VNC黑屏(转)
查看>>
Java反射简介
查看>>
day8--socket网络编程进阶
查看>>
node mysql模块写入中文字符时的乱码问题
查看>>
分析Ajax爬取今日头条街拍美图
查看>>
内存分布简视图
查看>>
如何学习虚拟现实技术vr? vr初级入门教程开始
查看>>
第4 章序列的应用
查看>>
初识闭包
查看>>
hdu1874畅通工程续
查看>>
rails 字符串 转化为 html
查看>>
AOP动态代理
查看>>
Yii2.0 下的 load() 方法的使用
查看>>
华为畅玩5 (CUN-AL00) 刷入第三方twrp Recovery 及 root
查看>>
[转] ReactNative Animated动画详解
查看>>
DNS原理及其解析过程
查看>>
没想到cnblog也有月经贴,其实C#值不值钱不重要。
查看>>
[转] Entity Framework Query Samples for PostgreSQL
查看>>
软件需求分析的重要性
查看>>
UVA465:Overflow
查看>>