#include <stdio.h>
#include <math.h>
#include "string.h"
#include <stdlib.h>
int a[39][39],ans[39];
int x[5] = {-1 ,1 ,0 ,0 ,0} ,y[5] = {0 ,0 ,-1 ,1 ,0} ;
void gauss(int n,int m)
{
int max_r;
int k=0,col=0;
for(;k<n&&col<m;++k,++col)
{
max_r=k;
int i=0;
for(i=k+1;i<n;++i)
{
if(abs(a[max_r][col]) < abs(a[i][col]))
max_r = i ;
}
if(!a[max_r][col])
{
--k;
continue;
}
if(max_r!=k)
{
for(i=col;i<=m;++i)
{
int temp;
temp=a[k][i];
a[k][i]=a[max_r][i];
a[max_r][i]=temp;
}
}
for(i=k+1;i<n;++i)
{
if(a[i][col])
{
int j;
for(j=col;j<=m;++j)
a[i][j] = a[i][j]^a[k][j] ;
}
}
for( i = n-1 ; i >= 0 ; --i)
{
ans[i] = a[i][m] ;
int j;
for( j = i+1 ;j < m ; ++j)
ans[i] = ans[i]^(a[i][j]&&ans[j]) ;
}
}
}
void input(int n ,int m){
int i,j,k;
for( i = 0 ;i < n ; ++i){
for( j = 0 ;j < m ; ++j){
int t = i*m + j ;
scanf("%d" ,&a[t][n*m]) ;
for( k = 0 ;k < 5 ; ++k){
int sx = x[k] + i ;
int sy = y[k] + j ;
int st = sx*m + sy ;
if(sx >= 0 && sx < n && sy >= 0 && sy < m){
a[t][st] = 1 ;
}
}
}
}
}
int main()
{
int nn=0;
int i=0,j=0,jj,kk;
scanf("%d",&nn);
for(j=0;j<nn;++j)
{
const int n=5,m=6;
memset(a,0,sizeof(a));
memset(ans,0,sizeof(ans));
input(n,m);
gauss(n*m,n*m);
printf("PUZZLE #%d\n",j+1);
for(jj=0;jj<30;++jj)
{
if((jj+1)%6 == 0){
printf("%d\n" ,ans[jj]) ;
}else printf("%d " ,ans[jj]) ;
}
}
return 0;
}
/*可以把 5*6 的初始矩阵看成一个30 * 1的列向量(为了后面更好的列方程,所以看成列向量)Y(y1 ,y2 ,y3 ……y30) 。
然后把每一个开关也看成一个列向量C(k)(向量里总共30个值),那向量里的值是什么呢?如果第 k 个开关被按下影响了哪个灯就把相应位置为1,
否则置为0(例如:按第一个开关,1,2,7号灯会有影响,那么C(1) = {1 ,1 ,0 ,0 ,0 ,0 ,1 ,0,后面全为0},其它的开关也这样,
那么要是全部的开关关掉,
就必须 Y(y1 ,y2……y30) + x1 * C(k1) + x2 * C(k2) + x3 * C(k3) ……+x30 * C(k30) = (0 ,0 ,0……0) (再次强调等式里的向量都是列向量),
这里等式左边需要mod 2,其中等式中的 x1 ,x2 ……x30 为未知数,为0 或 1 ,1 代表操作了此按钮,0代表没操作,然
后我们把所有未知数看成一个列向量X(x1 ,x2 ,x3……x30),C(k1) ,C(k2) ……C(k30),也组成一个30*30 的矩阵 A(C(k1) ,C(k2) ,C(k3)……C(k30))
(这里Y其实是一个对称向量,Y的转置等于Y),这样等式就变成了 A*X = Y (mod 2) ,这样方程就列出来了。
然后为什么有唯一解呢?我们可以发现 r(A) = 30,也就是说 A 可逆,因为r(A) = r(A ,Y) = 30 = n
(注意 : 如果矩阵不是30 * 30 的这种形式的矩阵,则可能不是唯一解) ,所以方程一定有唯一解。好了下面就可以用高斯消元解方程了。
(因为此矩阵 A 为对称矩阵那么代码中完全可以将向量C(k) 组成 A矩阵的时候看成行向量)。*/
/**************************************************************
Problem: 1470
User: 201601160202
Language: C
Result: Accepted
Time:4 ms
Memory:752 kb
****************************************************************/
没有合适的资源?快使用搜索试试~ 我知道了~
sdust面向对象程序设计基础题目
共4912个文件
c:2014个
cc:727个
md:725个
需积分: 0 0 下载量 100 浏览量
2022-09-12
15:56:52
上传
评论 1
收藏 1.98MB RAR 举报
温馨提示
sdust面向对象程序设计基础题目
资源详情
资源评论
资源推荐
收起资源包目录
sdust面向对象程序设计基础题目 (4912个子文件)
1470.c 4KB
1101.c 4KB
1068.c 4KB
1068.c 3KB
1177.c 3KB
1051.c 3KB
1052.c 3KB
1040.c 3KB
1050.c 3KB
1136.c 3KB
1191.c 3KB
1237.c 3KB
1434.c 3KB
1101.c 3KB
1063.c 3KB
1561.c 3KB
1040.c 2KB
1052.c 2KB
1051.c 2KB
1060.c 2KB
1136.c 2KB
1040.c 2KB
1310.c 2KB
2423.c 2KB
1179.c 2KB
1051.c 2KB
1055.c 2KB
1301.c 2KB
1068.c 2KB
1177.c 2KB
1177.c 2KB
1434.c 2KB
1470.c 2KB
1055.c 2KB
1139.c 2KB
1191.c 2KB
1063.c 2KB
1100.c 2KB
1060.c 2KB
1177.c 2KB
1191.c 2KB
1177.c 2KB
1136.c 2KB
1055.c 2KB
1055.c 2KB
1141.c 2KB
1220.c 2KB
1511.c 2KB
1063.c 2KB
1078.c 2KB
1050.c 2KB
1249.c 2KB
1220.c 2KB
1050.c 2KB
1637.c 2KB
1249.c 2KB
1136.c 2KB
1101.c 2KB
1168.c 2KB
1177.c 2KB
1100.c 2KB
1249.c 2KB
1434.c 2KB
1078.c 2KB
1050.c 2KB
1052.c 2KB
1141.c 2KB
1301.c 2KB
1633.c 2KB
1249.c 2KB
1137.c 2KB
1055.c 2KB
1063.c 2KB
1052.c 2KB
1068.c 2KB
1054.c 2KB
1137.c 2KB
1068.c 2KB
1511.c 2KB
1220.c 2KB
1249.c 2KB
1052.c 2KB
1048.c 2KB
1055.c 2KB
1220.c 2KB
1177.c 2KB
1048.c 2KB
1138.c 2KB
1310.c 2KB
1046.c 2KB
1208.c 2KB
1141.c 2KB
1511.c 2KB
1050.c 2KB
1048.c 2KB
1078.c 2KB
1286.c 2KB
1220.c 2KB
1141.c 2KB
1286.c 2KB
共 4912 条
- 1
- 2
- 3
- 4
- 5
- 6
- 50
qq_51399111
- 粉丝: 18
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- # 微信小程序-健康菜谱 基于微信小程序的一个查找检索菜谱的应用 ### 效果 !动态图(./res/gif/demo
- zabbix-get命令包资源
- 毕业设计,基于PyQt5实现的可视化界面的Python车牌自动识别系统源码
- 26-朴素贝叶斯分类.rar
- 没有安Matlab 也可以 生成FIR抽头系数工具.py
- python烟花代码.rar
- 实验目的: 1.构建基于verilog语言的组合逻辑电路和时序逻辑电路; 2.掌握verilog语言的电路设计技巧 3.完成如
- 扩展卡尔曼滤波matlab仿真
- 3_base.apk.1
- 躺赢者PRO飞控常见典型问题合集(续一)无名小哥 余义 20240501待修
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0