现在的位置: 首页 > 综合 > 正文

Codeforces 486B OR in Matrix(暴力)

2019年08月19日 ⁄ 综合 ⁄ 共 835字 ⁄ 字号 评论关闭

题目连接:Codeforces 486B OR in Matrix

题目大意:给定一个MN的矩阵b,求矩阵a是否存在。

解题思路:只要b矩阵有一个位置为0,那么说明这一行这一列的a矩阵上不可能有1,最后处理完在按照规则生成一下

b‘,比较一下是否相同即可。

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;
const int maxn = 105;

int M, N, a[maxn][maxn], b[maxn][maxn], c[maxn][maxn];

bool judge() {

    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            if (b[i][j] == 0) {
                for (int k = 0; k < N; k++) a[k][j] = 0;
                for (int k = 0; k < M; k++) a[i][k] = 0;
            }
        }
    }

    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            if (a[i][j] == 1) {
                for (int k = 0; k < N; k++) c[k][j] = 1;
                for (int k = 0; k < M; k++) c[i][k] = 1;
            }
        }
    }

    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++)
            if (b[i][j] != c[i][j])
                return true;
    }

    printf("YES\n");
    for (int i = 0; i < N; i++) {
        printf("%d", a[i][0]);
        for (int j = 1; j < M; j++)
            printf(" %d", a[i][j]);
        printf("\n");
    }
    return false;
}

int main () {
    scanf("%d%d", &N, &M);
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            a[i][j] = 1;
            scanf("%d", &b[i][j]);
        }
    }

    if (judge())
        printf("NO\n");
    return 0;
}

抱歉!评论已关闭.