Sample Input
9 9 4 XXXXXXXXX X...X...X X.*.....X X...X...X XXXXXXXXX X...X X...X X...X XXXXX 5 5 2 XXXXX X...X X.*.X X...X XXXXX
Sample Output
XXXXXXXXX X###X#..X X######.X X###X#..X XXXXXXXXX X...X X...X X...X XXXXX XXXXX X###X X###X X###X XXXXX
自己的答案
#include<stdio.h>
int a[4][2]={1,0,-1,0,0,1,0,-1},u[30][30];
char b[30][30];
int m,n,t;
void print()
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;b[i][j]!=' ';j++)
printf("%c",b[i][j]);
printf("
");
}
printf("
");
}
int sort(int x,int y,int k)
{
int i;
for(i=0;i<4;i++)
if(b[x+a[i][0]][y+a[i][1]]=='.'&&u[x+a[i][0]][y+a[i][1]]==0)
{
u[x+a[i][0]][y+a[i][1]]=1;
k++;
k=sort(x+a[i][0],y+a[i][1],k);
}
return k;
}
void main()
{
int i,j,p,l,g,h;
while(scanf("%d %d %d",&n,&m,&t)!=EOF)
{
int d=0;
int k=0;
int x,y;
int c[2][30][2]={0};
for(i=0;i<n;i++)
{
scanf("%s",b[i]);
for(j=0;b[i][j]!=' ';j++)
{
if(b[i][j]=='*')c[0][0][0]=i,x=i,y=j,c[0][0][1]=j,b[i][j]='#';
u[i][j]=0;
}
}
k=sort(x,y,k);
p=1,g=0;
if(t==0)print();
else if(t>0&&k==0)printf("No
");
else
{
for(i=1;i<=t;i++)
{
h=0;
for(l=0;l<p;l++)
{
for(j=0;j<4;j++)
{
if(b[c[d][l][0]+a[j][0]][c[d][l][1]+a[j][1]]=='.')
{
b[c[d][l][0]+a[j][0]][c[d][l][1]+a[j][1]]='#';
c[1-d][h][0]=c[d][l][0]+a[j][0],c[1-d][h][1]=c[d][l][1]+a[j][1];
h++;
g++;
}
}
}
d=1-d;
p=h;
if(i==t&&g<=k)
{
print();
break;
}
else if(i<t&&g>=k)
{
printf("No
");
break;
}
}
}
}
}