(http://115.28.138.223/view.page?gpid=T36)
//思路:复制一个c数组给d
#include<stdio.h>
#define maxn 35
int c[maxn][maxn],d[maxn][maxn];
int main()
{
int i,j,n,m,temp,cnt;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&c[i][j]);
d[i][j]=c[i][j];
}
}
for(i=0;i<n;i++)
{
cnt=1,j=1,temp=0;
while(j<m)
{
while(j<m&&c[i][j]==c[i][j-1])
{
j++;
cnt++;
temp=j-1;//记录相等的最后位置
}
if(cnt>=3)
{
while(cnt--)
{
d[i][j-1]=0;
j--;
}
}
cnt=1;
if(temp>=j)
j=temp;
j++;
}
}
for(j=0;j<m;j++)
{
cnt=1,i=1,temp=0;
while(i<n)
{
while(i<n&&c[i][j]==c[i-1][j])
{
i++;
cnt++;
temp=i-1;
}
if(cnt>=3)
{
while(cnt--)
{
d[i-1][j]=0;
i--;
}
}
cnt=1;
if(temp>=i)
i=temp;
i++;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%d ",d[i][j]);
printf("\n");
}
}