首先找到墨水
把它变为#
先判断它的上下左右是否为空
如果是dfs
一开始想当然的认为碰到X就返回
是错的
只要它周围的四个点为空
都可以dfs下去
#include <stdio.h>
#include <string.h>
char map[50][100];
void dfs(int x, int y){
map[x][y] = '#';
if (map[x - 1][y] == ' ')
dfs(x - 1, y);
if (map[x][y - 1] == ' ')
dfs(x, y - 1);
if (map[x + 1][y] == ' ')
dfs(x + 1, y);
if (map[x][y + 1] == ' ')
dfs(x, y + 1);
}
int main(){
int n;
scanf("%d", &n);
getchar();
while (n > 0){
int cnt = 0, len, l = 0;
while (gets(map[cnt++])) {
len = strlen(map[cnt - 1]);
if (len > l)
l = len;
if (map[cnt - 1][0] == '_')
break;
}
for (int i = 1; i < cnt; i++)
for (int j = 1; j < l; j++)
if (map[i][j] == '*')
dfs(i, j);
for (int i = 0; i < cnt; i++)
puts(map[i]);
n--;
}
return 0;
}