#include<bits/stdc++.h>
using namespace std;
const int N = 100;
int a[N][N];
int b[N][N];//表示(i,j)位置的格子能不能删,能删标记为1,不能删标记为0
int main() {
int n, m;
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
scanf("%d", &a[i][j]);
b[i][j] = 0;//初始化b
}
}
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
int u=i,d=i,l=j,r=j;
int x=a[i][j];
//从(i,j)位置出发,沿上下左右四个方向出发,
//当与a[i][j]值相同时才能沿当前方向继续前进,
//当列或者行方向上的个数大于等于3时,标记 a[i][j]可以被消除
while(u>=1&&a[u][j]==x) u--;//
while(d<=n&&a[d][j]==x) d++;
while(r<=m&&a[i][r]==x) r++;
while(l>=1&&a[i][l]==x) l--;
if(d-u-1>=3||r-l-1>=3)
{
b[i][j]=1;
}
}
}
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
if(b[i][j]) printf("%d ",0);
else printf("%d ",a[i][j]);
}
printf("\n");
}
}
10-28
9287