水题一道,直接DFS。
下面是代码:
#include<stdio.h>
#include<string.h>
char map[35][85];
//int vis[35][85];
int move[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int h;
void dfs(int x,int y)
{
for(int i=0;i<4;i++)
{
int dx=x+move[i][0];
int dy=y+move[i][1];
if(dx>=0&&dx<h&&dy>=0&&dy<strlen(map[x]))
{
if(map[dx][dy]==' ') map[dx][dy]='#',dfs(dx,dy);
}
}
return ;
}
int main()
{
int T;
// freopen("a.in","r",stdin);
scanf("%d",&T);
getchar();
while(T--)
{
int w;
h=0;
while(gets(map[h])&&map[h++][0]!='_');
for(int i=0;i<h;i++)
{
w=strlen(map[i]);
for(int j=0;j<w;j++)
{
if(map[i][j]=='*')
{
map[i][j]='#';
dfs(i,j);
}
}
}
for(int i=0;i<h;i++) printf("%s\n",map[i]);
}
//fclose(stdin);
return 0;
}