题意:给你一个矩阵A 问你一个矩阵B乘这个矩阵是否可以等于矩阵A
解法:先扫描0 如果为0 那么这行和这列都要为0 再用1判断
题目网址:http://codeforces.com/contest/486/problem/B
代码:
#include<iostream>
#include<string>
#include<algorithm>
#include<cstdlib>
#include<cstdio>
#include<set>
#include<map>
#include<vector>
#include<cstring>
#include<stack>
#include<cmath>
#include<queue>
#define INF 0x0f0f0f0f
using namespace std;
int main()
{
bool a[105][105],b[105][105];
int i,j,k,l,m,n,ii,jj,jud;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
b[i][j]=1;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(!a[i][j])
{
for(ii=0;ii<n;ii++)
{
b[ii][j]=0;
}
for(jj=0;jj<m;jj++)
{
b[i][jj]=0;
}
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
jud=0;
if(a[i][j])
{
for(ii=0;ii<n;ii++)
{
if(b[ii][j]) jud=1;
}
for(jj=0;jj<m;jj++)
{
if(b[i][jj]) jud=1;
}
}
if(!jud)
{
printf("NO\n");
return 0;
}
}
}
printf("YES\n");
for(i=0;i<n;i++)
{
printf("%d",b[i][0]);
for(j=1;j<m;j++)
{
printf(" %d",b[i][j]);
}
printf("\n");
}
return 0;
}