CCF第六次CSP认证考试题解
#include<stdio.h>
struct point{
int flag=1;
int num;
};
#define MAX 31
struct point box[MAX][MAX];
int n,m;
//void search(int i,int j,int *cnt);
int main(void)
{
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
scanf("%d",&box[i][j].num);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{ int k=0;
for(k=j+1;box[i][k].num==box[i][j].num;k++)
;
if(k-j>=3)
for(k--;k>=j;k--)
box[i][k].flag=0;
}
for(int j=0;j<m;j++)
for(int i=0;i<n;i++)
{ int k=0;
for(k=i+1;box[i][j].num==box[k][j].num;k++)
;
if(k-i>=3)
for(k--;k>=i;k--)
box[k][j].flag=0;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(box[i][j].flag!=0)
printf("%d",box[i][j].num);
else
printf("%d",box[i][j].flag);
if(j!=m)
printf(" ");
}
printf("\n");
}
return 0;
}