首页 > 代码库 > Codeforces 486B - OR in Matrix
Codeforces 486B - OR in Matrix
矩阵的 OR ,也是醉了。
题目意思很简单,就是问你有没有这么一个矩阵,可以变化,得到输入的矩阵。
要求是这个矩阵每行都可以上下任意移动,每列都可以左右任意移动。
解题方法:
1.也是导致我WA 的原因,首先要判断是否是一个零矩阵,如果是一个零矩阵,那么YES输出
2.判断输入矩阵存在1的那个位置,在输出矩阵的同一行同一列是否存在1,如果没有则NO输出
3.开辟数组X[MAXN],Y[MAXN]记录这一行或者这一列是否有0这个元素
//#pragma comment(linker, "/STACK:16777216") //for c++ Compiler#include <stdio.h>#include <iostream>#include <cstring>#include <cmath>#include <stack>#include <queue>#include <vector>#include <algorithm>#define ll long long#define Max(a,b) (((a) > (b)) ? (a) : (b))#define Min(a,b) (((a) < (b)) ? (a) : (b))#define Abs(x) (((x) > 0) ? (x) : (-(x)))using namespace std;const int INF = 0x3f3f3f3f;int a[111][111], b[111][111], x[111], y[111];// Martix a as output Martix, Martix b as input Martixint n, m;int main(){ int i, j, t, k; while(EOF != scanf("%d%d",&n,&m)){ for(i = 1; i <= n; ++i){ for(j = 1; j <= m; ++j){ scanf("%d",&a[i][j]); b[i][j] = a[i][j]; if(!a[i][j]){ x[i] = 1; y[j] = 1; } } } bool ff = true; for(i = 1; i <= n; ++i){ for(j = 1; j <= m; ++j){ if(x[i] || y[j]){ // nice cood a[i][j] = 0; } else{ ff = false; } } } bool falg = false; for(i = 1; i <= n; ++i){ for(j = 1; j <= m; ++j){ if(a[i][j]) falg = true; } } if(ff) falg = true; for(i = 1; i <= n; ++i){ for(j = 1; j <= m; ++j){ bool kk = false; if(b[i][j]){ for(int ii = 1; ii <= n; ++ii){ if(a[ii][j]) kk = true; } for(int jj = 1; jj <= m; ++jj){ if(a[i][jj]) kk = true; } if(!kk){ falg = false; } } } } if(falg){ printf("YES\n"); for(i = 1; i <= n; ++i){ for(j = 1; j < m; ++j){ printf("%d ",a[i][j]); } printf("%d\n",a[i][m]); } } else{ printf("NO\n"); } } return 0;}
Codeforces 486B - OR in Matrix
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。