1.程序会不断读取 W 和 H,代表房子在 x 和 y 方向的瓷砖数量,当 W 和 H 都为 0 时程序结束。
2.接着会读取 H 行的瓷砖信息,@ 为起始位置,# 为红色瓷砖,. 为黑色瓷砖。
3.程序使用深度优先搜索遍历从起始位置开始能到达的黑色瓷砖,计算数量并输出。
这个程序通过深度优先搜索算法实现了从起始位置遍历相邻黑色瓷砖的功能,通过标记已访问的位置避免重复访问,最终计算出可到达的黑色瓷砖的数量。
核心代码:
// 深度优先搜索函数,用于遍历相邻的黑色瓷砖
int dfs(int x, int y) {
int count = 1;
visited[x][y] = true;
for (int i = 0; i < 4; ++i) {
int nx = x + dx[i];
int ny = y + dy[i];
// 检查新位置是否在房子范围内且是未访问的黑色瓷砖
if (nx >= 0 && nx < H && ny >= 0 && ny < W && house[nx][ny] == '.' &&!visited[nx][ny]) {
count += dfs(nx, ny);
}
}
return count;
}