多组测试数据与各种情况的预测请一定全部考虑到。
第一次做90分,WA,一直找不出问题还以为系统bug其实还是函数具体实现错误
测试图
....code......
#include<stdio.h>
int a[35][35];
int book[35][35];
int sum,m,n,c,b;
int i,j;
int dfs(int x,int y)
{
int next[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int k;
int tx=1;
int ty=1;
for(k=0;k<=3;k++)
{
tx=x+next[k][0];
ty=y+next[k][1];
while((tx>=1)&&(tx<=m)&&(ty>=1)&&(ty<=n))
{
if(a[tx][ty]==a[x][y])
{
sum++;
tx=tx+next[k][0];
ty=ty+next[k][1];
}
else
{
if(sum>=2)
{
c=x+next[k][0];
b=y+next[k][1];
for(i=sum;i>0;i--)
{
book[c][b]=0;
sum--;
c=c+next[k][0];
b=b+next[k][1];
}
book[x][y]=0;
tx=0;
}
else
tx=0;
}
}
if(sum>=2)
{
c=x+next[k][0];
b=y+next[k][1];
for(i=sum;i>0;i--)
{
book[c][b]=0;
sum--;
c=c+next[k][0];
b=b+next[k][1];
}
book[x][y]=0;
tx=0;
}
sum=0;
}
return 0;
}
int main()
{
scanf("%d %d",&m,&n);
int p,q;
for(p=1;p<=m;p++)
for(q=1;q<=n;q++)
{
scanf("%d",&a[p][q]);
book[p][q]=a[p][q];
}
printf("-------------------------------------------------------------------\n");
for(p=1;p<=m;p++)
for(q=1;q<=n;q++)
dfs(p,q);
for(p=1;p<=m;p++)
for(q=1;q<=n;q++)
{
printf("%d ",book[p][q]);
if(q==n)
printf("\n");
}
return 0;
}
待优化...