你有一张某海域 � × � N×N 像素的照片,. 表示海洋、 # 表示陆地,如下所示: ....... .##.... .##.... ....##. ..####. ...###. ....... 其中 "上下左右" 四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有 2 2 座岛屿。 由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。 例如上图中的海域未来会变成如下样子: ....... ....... ....... ....... ....#.. ....... ....... 请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。 输入格式 第一行包含一个整数 � N。 ( 1 ≤ � ≤ 1000 ) (1≤N≤1000)。 以下 � N 行 � N 列代表一张海域照片。 照片保证第 1 1 行、第 1 1 列、第 � N 行、第 � N 列的像素都是海洋。 输出格式 一个整数表示答案。用c++ 代码表示
时间: 2024-04-12 14:33:44 浏览: 194
你好!根据题目描述,你需要编写一个程序来计算在未来海水上升的情况下,有多少座岛屿会被完全淹没。以下是一个示例的 C++ 代码实现:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 定义上、下、左、右四个方向的偏移量
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, -1, 1};
// 深度优先搜索函数,用于遍历岛屿并将其标记为已访问
void dfs(vector<vector<char>>& grid, int x, int y, int n) {
// 判断坐标是否越界或者当前位置不是陆地
if (x < 0 || x >= n || y < 0 || y >= n || grid[x][y] != '#') {
return;
}
// 将当前位置标记为已访问
grid[x][y] = '.';
// 对当前位置的上、下、左、右四个相邻位置进行深度优先搜索
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
dfs(grid, nx, ny, n);
}
}
int main() {
int n;
cin >> n;
// 读取海域照片并存储到二维向量中
vector<vector<char>> grid(n, vector<char>(n));
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> grid[i][j];
}
}
int count = 0; // 记录被完全淹没的岛屿数量
// 遍历海域照片,对每个陆地进行深度优先搜索
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (grid[i][j] == '#') {
dfs(grid, i, j, n);
count++;
}
}
}
cout << count << endl;
return 0;
}
```
你可以将上述代码保存为一个名为 `island_count.cpp` 的文件,然后使用 C++ 编译器进行编译运行。输入部分按照题目要求进行输入,然后程序将输出被完全淹没的岛屿数量。
希望对你有帮助!如果还有其他问题,请随时提问。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![ppt](https://img-home.csdnimg.cn/images/20241231044937.png)
![xls](https://img-home.csdnimg.cn/images/20241231045031.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![pptx](https://img-home.csdnimg.cn/images/20241231044947.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![ppt](https://img-home.csdnimg.cn/images/20241231044937.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)