n,m=map(int,input().split())#接收行,列
hang=[]
lie=[[] for i in range(m)]
for i in range(n):
hang.append(list(map(int,input().split())))#接收每行的数
for j in range(m):
lie[j].append(hang[i][j])#接收每列的数
line=hang#创建一个副本的行
for i in range(n):#消除行的重复
time=1#记录相同次数
last=hang[i][0]#记录上次的数
ind=[0]#记录相同的下标
ll=0#记录当前下标
for j in hang[i][1:m]:#从第一行开始遍历
ll+=1
if j==last:#当前值与上个值相等
time+=1
ind.append(ll)#就存进去
elif j!=last:#当前值与上个值不相等
if len(ind) >= 3:#如果存的下标有三个及以上
for k in ind:
line[i][k]=0#在副本变成0
for k in range(time):
if len(ind)>=1:
ind.pop(len(ind)-1)#根据次数 总是移除最后的下标
last=j
time=1
ind.append(ll)
if len(ind) >= 3:#同上
for k in ind:
line[i][k] = 0
for i in range(m):#消除列的重复,同上
time = 1
last = lie[i][0]
ind = [0]
ll = 0
for j in lie[i][1:n]:
ll+=1
if j == last:
time += 1
ind.append(ll)
elif j != last:
if len(ind) >= 3:
for k in ind:
line[k][i] = 0
for k in range(time):
if len(ind) >= 1:
ind.pop(len(ind) - 1)
last = j
time = 1
ind.append(ll)
if len(ind) >= 3:
for k in ind:
line[k][i] = 0
for i in range(n):#输出副本
print(" ".join(str(j) for j in line[i]))
05-05
568
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
05-26
1092
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)