很水的水题,深搜一遍完事,没啥好说的,贴代码.....
/*
Uva 784
2012-10-15 20:01:07
*/
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
int height;
int width;
char maze[100][100];
int sx,sy;
void DFS(int x,int y)
{
if(x>=height||y>=width||x<0||y<0||maze[x][y]!=' '&&maze[x][y]!='*'||maze[x][y]=='X')
return ;
maze[x][y]='#';
DFS(x-1,y);
DFS(x,y-1);
DFS(x+1,y);
DFS(x,y+1);
}
void read()
{
height=0;
int i=0;
int max=-1;
while(1)
{
gets(maze[i]);
if(maze[i][0]=='_')
break;
i++;
}
height=i;
for(int k=0;k<height;++k)
{
int t=strlen(maze[k]);
if(t>max)
{
max=strlen(maze[k]);
}
}
width=max;
//printf("%d %d\n",height,width);
for(int j=0;j<height;++j)
{
for(int k=0;k<width;++k)
{
if(maze[j][k]=='*')
{
sx=j;
sy=k;
}
// printf("%c",maze[j][k]);
}
// printf("\n");
}
}
void out()
{
for(int i=0;i<height;++i)
{
puts(maze[i]);
}
}
int main()
{
int num;
while(scanf("%d",&num)!=EOF)
{
getchar();
for(int i=0;i<num;++i)
{
read();
DFS(sx,sy);
out();
puts(maze[height]);
}
}
return 0;
}