POJ
来源:互联网 发布:电脑内部录音软件 编辑:程序博客网 时间:2024/06/05 07:09
题意
思路
Guass消元法解方程组
链接
https://vjudge.net/contest/176567#problem/L
代码
#include<cstdio>#include<iostream>#include<cstring>using namespace std;int matrix[37][37], id[37];int dir[4][2] = {0, 1, 1, 0, -1, 0, 0, -1};void Guess(int n, int m){ int i= 0, j = 0; while(i < n && j < m) { int max_i = i; for(int k= i+1; k< n; k++) if(matrix[k][j] == 1) { max_i = k; break; } if(matrix[max_i][j]) { if(max_i != i) for(int k= 0; k< m; k++) swap(matrix[max_i][k], matrix[i][k]); for(int u= 0; u< n; u++) if(i != u && matrix[u][j]) for(int k= j; k< m; k++) matrix[u][k] = matrix[u][k] ^ matrix[i][k]; i++; } j++; }}int main(){ int n, cas = 1; scanf("%d", &n); while(n --) { memset(matrix, 0, sizeof matrix); memset(id, 0, sizeof id); for(int i= 0; i< 5; i++) for(int j= 0; j< 6; j++) { scanf("%d", &id[i*6+j]); matrix[i*6+j][30] = id[i*6+j]; } for(int i= 0; i< 5; i++) for(int j= 0; j< 6; j++) { matrix[i*6+j][i*6+j] = 1; for(int k= 0; k< 4; k++) { int x = i + dir[k][0]; int y = j + dir[k][1]; if(x >= 0 && x < 5 && y >= 0 && y < 6) matrix[i*6+j][x*6+y] = 1; } } Guess(30, 31); printf("PUZZLE #%d\n", cas++); for(int i= 0; i< 5; i++) { for(int j= 0; j< 6; j++) printf("%d ", matrix[i*6+j][30]); printf("\n"); } } return 0;}
阅读全文
0 0
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- Ubuntu16.04下安装MySQL 5.7.20
- (转)函数调用栈 剖析+图解
- ubuntu17.10解决fcitx输入法不能在idea或者其他java软件环境下使用中文的问题
- 分布式系统的一致性探讨
- nginx配置反向代理
- POJ
- ubuntu安装pip+python27+ipython+scrapy+zlib-及遇到的各种问题解决
- python 集合比较(交集、并集,差集)
- 深入哈希表(二)--开放定址法实现哈希表
- 2017年11.08
- ACM复习(10)8619 公约公倍
- java简介
- 关于分布式事务、两阶段提交协议、三阶提交协议
- 使用CLion建立多工程目录(简易)