B. OR in Matrix
 

Let's define logical OR as an operation on two logical values (i. e. values that belong to the set {0, 1}) that is equal to 1 if either or both of the logical values is set to 1, otherwise it is 0. We can define logical OR of three or more logical values in the same manner:

 where  is equal to 1 if some ai = 1, otherwise it is equal to 0.

Nam has a matrix A consisting of m rows and n columns. The rows are numbered from 1 to m, columns are numbered from 1 to n. Element at row i (1 ≤ i ≤ m) and column j (1 ≤ j ≤ n) is denoted as Aij. All elements of A are either 0 or 1. From matrix A, Nam creates another matrix B of the same size using formula:

.

(Bij is OR of all elements in row i and column j of matrix A)

Nam gives you matrix B and challenges you to guess matrix A. Although Nam is smart, he could probably make a mistake while calculating matrix B, since size of A can be large.

Input

The first line contains two integer m and n (1 ≤ m, n ≤ 100), number of rows and number of columns of matrices respectively.

The next m lines each contain n integers separated by spaces describing rows of matrix B (each element of B is either 0 or 1).

Output

In the first line, print "NO" if Nam has made a mistake when calculating B, otherwise print "YES". If the first line is "YES", then also print mrows consisting of n integers representing matrix A that can produce given matrix B. If there are several solutions print any one.

Sample test(s)
input
2 2
1 0
0 0
output
NO
 
题意:给你一个矩阵,推原矩阵
题解:模拟就好了
//
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll;
#define mem(a) memset(a,0,sizeof(a))
#define pb push_back
#define meminf(a) memset(a,127,sizeof(a)); inline ll read()
{
ll x=,f=;char ch=getchar();
while(ch<''||ch>''){
if(ch=='-')f=-;ch=getchar();
}
while(ch>=''&&ch<=''){
x=x*+ch-'';ch=getchar();
}return x*f;
}
//****************************************
#define maxn 1000+5
#define mod 1000000007 int c[maxn][maxn],b[maxn][maxn],a[maxn][maxn];
int main(){ int n=read();
int m=read();
memset(b,-,sizeof(b));
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(a[i][j]==){
for(int k=;k<=m;k++){
b[i][k]=;
}
for(int k=;k<=n;k++){
b[k][j]=;
}
}
}
}
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(b[i][j]==-)b[i][j]=;
}
}
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
int aa=;
for(int k=;k<=m;k++){
aa|=b[i][k];
}
for(int k=;k<=n;k++){
aa|=b[k][j];
}
c[i][j]=aa;
}
}bool flag=;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(c[i][j]!=a[i][j])flag=;
}
}
if(!flag){
cout<<"YES"<<endl;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
cout<<b[i][j]<<" ";
}
cout<<endl;
}
}
else cout<<"NO"<<endl;
return ;
}

代码

最新文章

  1. 利用Jquery获取、设置iframe中元素
  2. svg转化成canvas以便生成base64位的图片
  3. android访问网络--okhttp
  4. Nginx_查看并发连接数
  5. Windows上的文件合并命令
  6. html5 的&lt;audio&gt; 音频 audio的“坑”
  7. 第一篇——第一文 SQL Server 备份基础
  8. java枚举类(enum) 基础知识讲解
  9. 使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js
  10. 将项目打成jar包执行 在liunx上执行 java -xx.jar
  11. python os.path.isfile函数
  12. 11g直接路径读、相关参数、10949事件介绍
  13. Elasticsearch学习笔记(六)核心概念和分片shard机制
  14. Ado.Net实体数据模型EF,如何在代码中添加数据库连接密码
  15. C#调试心经
  16. Windows10卡顿,磁盘 内存占用100%或比较多
  17. Js_特效II
  18. $.ajax使用总结(一):Form提交与Payload提交
  19. 20144306《网络对抗》MAL_PC平台逆向破解_Advanced
  20. BCB ERROR:[Linker Error] &#39;XXX.LIB&#39; contains invalid OMF record, type 0x21 (possibly COFF)

热门文章

  1. 商业计算中Java高精度计算BigDecimal类
  2. flask web开发日记
  3. React-Native WebView动态加载字体
  4. java网络
  5. Centos6.6 安装rsync服务端
  6. (转) 基于Arcgis for Js的web GIS数据在线采集简介
  7. JDK升级
  8. 扩增子图表解读1箱线图:Alpha多样性
  9. https webservice通讯 参考网址 http://blog.csdn.net/small____fish/article/details/8214938
  10. flask之配置文件的加载和动态url的使用