zoukankan      html  css  js  c++  java
  • Codeforces 486B

    矩阵的 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
    ");
                for(i = 1; i <= n; ++i){
                    for(j = 1; j < m; ++j){
                        printf("%d ",a[i][j]);
                    }
                    printf("%d
    ",a[i][m]);
                }
            }
            else{
                printf("NO
    ");
            }
        }
        return 0;
    }
  • 相关阅读:
    evernote100个做笔记的好方法
    平衡二叉树的调整模版
    晨间日记的奇迹
    hdu 2952 Counting Sheep
    hdu 1535 Invitation Cards
    poj 3259 Wormholes(spfa)
    poj 2263 Heavy Cargo(floyd)
    poj 3268 Silver Cow Party(SPFA)
    hdu 1690 Bus System
    hdu 3631 Shortest Path(Floyd)
  • 原文地址:https://www.cnblogs.com/wushuaiyi/p/4115914.html
Copyright © 2011-2022 走看看