/* 题目大意:X为迷宫的墙壁,将*能走到的位置标记为#,
* 最后输出标记后的迷宫。
* 解题思路:直接DFS水过
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define DIR 4
#define MAX_ROW 31
#define MAX_COL 81
char a[MAX_ROW][MAX_COL];
char str[MAX_COL];
int visited[MAX_ROW][MAX_COL];
int dir[][2] = {
{0, -1}, {0, 1}, {1, 0}, {-1, 0}
};
void DFS(int x, int y){
visited[x][y] = 1;
a[x][y] = '#';
for(int i = 0; i < DIR; i ++)
if( ' ' == a[x+dir[i][0]][y+dir[i][1]] ) DFS(x+dir[i][0], y+dir[i][1]);
}
int main(int argc, char const *argv[]) {
#ifndef ONLINE_JUDGE
freopen("test.in", "r", stdin);
#endif
int cas, row, row_pos, col_pos;
scanf("%d", &cas);
getchar();
while( cas -- ) {
memset(a, '\0', sizeof(a));
memset(visited, 0, sizeof(visited));
row = 0;
while( gets(str) ) {
for(int i = 0; '\0' != str[i]; i ++) {
a[row][i] = str[i];
if( '*' == a[row][i] ) {
row_pos = row;
col_pos = i;
}
}
row ++;
if( '_' == *str ) break;
}
DFS(row_pos, col_pos);
for(int i = 0; i < row; i ++) {
for(int j = 0; '\0' != a[i][j]; j ++) {
printf("%c", a[i][j]);
}
printf("\n");
}
}
return 0;
}
uva_784-Maze Exploration
最新推荐文章于 2015-02-14 00:11:07 发布