码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces 486B - OR in Matrix

时间:2014-11-23 00:26:02      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   os   sp   for   on   

矩阵的 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 Martix
int 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

标签:style   blog   io   ar   color   os   sp   for   on   

原文地址:http://www.cnblogs.com/wushuaiyi/p/4115914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!