POJ 1222 EXTENDED LIGHTS OUT 【高斯消元】
2016-07-28 08:19
405 查看
解题思路:
这题不难,直接构造方程高斯消元就可以了,但是看到大家都是按有唯一解做的,事实的确如此,因为方程的系数矩阵式固定的,容易发现系数矩阵一定满秩->方程有唯一解代码:
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #include<map> #include<string> #include<queue> #include<vector> #include<list> //#pragma comment(linker,"/STACK:1024000000,1024000000") using namespace std; #define INF 0x3f3f3f3f #define MAXN 35 const int mod=2; int a[MAXN][MAXN]; int x[MAXN]; int Gauss(int equ,int var) { int now_r,now_c; for(now_r=now_c=0;now_r<equ&&now_c<var;now_r++,now_c++) { int max_r=now_r; for(int j=now_r+1;j<equ;j++) { if(a[j][now_c]>a[max_r][now_c]) max_r=j; } if(a[max_r][now_c]==0) { now_r--; continue; } if(max_r!=now_r) { for(int j=now_c;j<=var;j++) swap(a[now_r][j],a[max_r][j]); } for(int j=0;j<equ;j++) { if(now_r==j) continue; if(a[j][now_c]) for(int k=now_c;k<=var;k++) a[j][k]^=a[now_r][k]; } } for(int i=0;i<var;i++) x[i]=a[i][30]; int r=now_r; if(r==equ) return 0; else return -1; } int main() { int t,tt=0; scanf("%d",&t); while(t--) { memset(a,0,sizeof a); for(int i=0; i<30; i++) { int u=i-6,d=i+6,l=i-1,r=i+1; a[i][i]=1; if(u>=0) a[i][u]=1; if(d<30) a[i][d]=1; if(i%6>0) a[i][l]=1; if(i%6<5) a[i][r]=1; } for(int i=0;i<30;i++) scanf("%d",&a[i][30]); int ans=Gauss(30,30); // for(int i=0;i<30;i++) // for(int j=0;j<30;j++) // printf("%d%c",a[i][j],j==29?'\n':' '); printf("PUZZLE #%d\n",++tt); for(int i=0;i<5;i++) for(int j=0;j<6;j++) printf("%d%c",x[6*i+j],j==5?'\n':' '); } return 0; }
相关文章推荐
- Appcan后台数据库表交互,注册
- 红黑树的基本原理
- PHP 笔记
- 就是这个foxmail有时出现记事同步不了
- Quartz2D-饼状图
- CF #364 (Div. 2)( A. Cards 简单模拟)
- Appcan页面跳转
- POI导入导出工具类
- PHP基础之 file_get_contents() 函数
- 开启硬件辅助虚拟化
- An invalid form control with name='xxx' is not focusable
- Yii2.0 ajax多条件搜索 返回json数据格式
- js基本简介(了解)
- Class.forName VS ClassLoader.loadClass
- LeetCode[319] Bulb Switcher
- IIS上虚拟目录下站点的web.config与根站点的web.config冲突解决方法
- 视频播放vitamio
- CEWL
- Android第四十三天
- 【笔记】JS基础一