AcWing 4804. 构造矩阵
原题链接
中等
作者:
我是java同学
,
2023-02-05 18:42:12
,
所有人可见
,
阅读 114
模拟
#include <iostream>
#include <cstring>
using namespace std;
const int N = 110;
int n, m;
int a[N][N], b[N][N];
bool check()
{
for (int i = 0; i < n; i ++ )
for (int j = 0; j < m; j ++ )
if (b[i][j])
{
int cnt = 0;
for (int k = 0; k < n; k ++ ) cnt += a[k][j];
for (int k = 0; k < m; k ++ ) cnt += a[i][k];
if (!cnt) return false;
}
return true;
}
int main()
{
cin >> n >> m;
memset(a, -1, sizeof a);
for (int i = 0; i < n; i ++ )
for (int j = 0; j < m; j ++ )
{
cin >> b[i][j];
if (!b[i][j])
{
for (int k = 0; k < n; k ++ ) a[k][j] = 0;
for (int k = 0; k < m; k ++ ) a[i][k] = 0;
}
}
if (check())
{
puts("YES");
for (int i = 0; i < n; i ++ )
{
for (int j = 0; j < m; j ++ )
cout << !!a[i][j] << ' ';
puts("");
}
}
else
puts("NO");
return 0;
}