挺简单的题目.
给一个迷宫, 用'#'输出所有能走的地方.
只要用DFS就可以了, 搜索四个方向.
其实我很好奇他给出墙壁的宽是3point的目的是什么...
#include <cstdio>
#include <cstring>
using namespace std;
char maze[40][100];
char ch;
void DFS(int x, int y);
int main()
{
//freopen("input.txt", "r", stdin);
int i, T, k;
int x, y;
bool isFind;
scanf("%d%*c", &T);
while (T--)
{
k = 0;
isFind = false;
while (gets(maze[k++]))
{
if (maze[k - 1][0] == '_')
break;
if (isFind == false)
for (i = 0; i < strlen(maze[k - 1]); i++) //记录*的坐标.
if (maze[k - 1][i] == '*')
{
x = k - 1;
y = i;
isFind = true;
}
}
ch = maze[0][0];
//接下来开始遍历.
DFS(x, y);
for (i = 0; i < k; i++)
puts(maze[i]);
memset(maze, 0, sizeof(maze));
}
return 0;
}
void DFS(int x, int y)
{
if (maze[x][y] == ch || maze[x][y] == '#')
return;
maze[x][y] = '#';
DFS(x - 1, y);
DFS(x, y + 1);
DFS(x, y - 1);
DFS(x + 1, y);
}