poj EXTENDED LIGHTS OUT
来源:互联网 发布:rpm e mysql 编辑:程序博客网 时间:2024/05/20 07:58
开关问题是典型的高斯消元问题
不过这道题我一直错了好久,后来发现在对系数矩阵a进行赋值时, 要每次都重新赋值, 不然a作为一个全局变量, 上一次计算的结果造成对下一次结果的影响,下面附上代码
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int a[35][35];void gauss(){ int i, j, k; for(k=1; k<=30; k++) { if(a[k][k] == 0) { for(i=k+1; i<=30; i++) if(a[i][k]) break; for(j=k; j<=31; j++) swap(a[i][j], a[k][j]); } for(i=1; i<=30; i++) if(a[i][k] && i!=k) for(j=k; j<=31; j++) a[i][j] ^= a[k][j]; }}int main(){ int t, ca = 1; scanf("%d", &t); while(t--) { memset(a, 0, sizeof(a)); for(int i=1; i<=30; i++) // 之前一直把这个for循环放在while外面 { // 结果上一次的结果影响了下一次 a[i][i] = 1; if(i%6 != 0) a[i][i+1] = 1; if(i%6 != 1) a[i][i-1] = 1; if(i>6) a[i][i-6] = 1; if(i<25) a[i][i+6] = 1; } for(int i=1; i<=30; i++) scanf("%d", &a[i][31]); gauss(); printf("PUZZLE #%d\n", ca++); for(int i=1; i<=30; i++) { printf("%d", a[i][31]); if(i%6 == 0) printf("\n"); else printf(" "); } } return 0;}
- poj EXTENDED LIGHTS OUT
- EXTENDED LIGHTS OUT POJ
- poj 1222 EXTENDED LIGHTS OUT
- POJ 1222 EXTENDED LIGHTS OUT
- POJ 1222 : EXTENDED LIGHTS OUT
- POJ 1222 EXTENDED LIGHTS OUT
- POJ 1222 EXTENDED LIGHTS OUT
- POJ 1222 EXTENDED LIGHTS OUT
- poj 1222:EXTENDED LIGHTS OUT
- POJ 1222 EXTENDED LIGHTS OUT
- POJ 1222 EXTENDED LIGHTS OUT
- poj 1222EXTENDED LIGHTS OUT
- POJ 1222 EXTENDED LIGHTS OUT
- POJ 1222 EXTENDED LIGHTS OUT
- [POJ 1222] EXTENDED LIGHTS OUT
- 【POJ 1222】EXTENDED LIGHTS OUT
- POJ 1222 EXTENDED LIGHTS OUT
- poj-1222 EXTENDED LIGHTS OUT
- Struts2的convention配置说明
- 表单提交后action获取到的中文为乱码排查步骤
- C#删除文件夹
- 如何用java比较两个时间或日期的大小
- poj 3207 poj 3678 谈2-sat建图
- poj EXTENDED LIGHTS OUT
- 10本IT历史必读书
- matlab for linux 安装
- Android移植: wifi设计原理(源码分析)
- 黑马程序员_15 反射
- android显示和隐藏键盘
- HTTP 协议详解
- JAVA访问权限控制
- JDBC连接各种数据库方法