Maze Exploration
大意:
给出一张图,图上有一点*,以此处向外围运动(上下左右),将能到达的位置标记为#(包括最初的位置);
要点:
用dfs模拟即可:
代码:
#include <iostream>
#include <string.h>
using namespace std;
int dir[4][2] = { { 1, 0 }, { -1, 0 }, { 0, 1 }, { 0, -1 } };
char map[35][85];
void dfs(int x, int y, int n){
map[x][y] = '#';
for (int i = 0; i < 4; i++){
int a = x + dir[i][0];
int b = y + dir[i][1];
if (a >= 0 && b >= 0 && a < n && b < strlen(map[a])){
if (map[a][b] == ' ')
dfs(a, b, n);
}
}
}
int main(){
int num;
scanf("%d", &num);
getchar();
while (num--){
int n;
for (n = 0; fgets(map[n], 80, stdin) && map[n][0] != '_'; n++){}
for (int i = 0; i < n; i++){
for (int j = 0; j < strlen(map[i]); j++)
if (map[i][j] == '*'){
dfs(i, j, n);
break;
}
}
for (int i = 0; i <= n; i++)
printf("%s", map[i]);
}
return 0;
}