请你写出C++的代码
时间: 2024-02-21 16:02:02 浏览: 77
以下是C++实现的代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
int n; // 方阵阶数
vector<vector<int>> grid; // 存储方阵的二维数组
// 定义一个函数,用于计算小岛面积
int dfs(int i, int j, vector<vector<bool>>& visited) {
if (i < 0 || i >= n || j < 0 || j >= n || grid[i][j] == 0 || visited[i][j]) {
return 0; // 如果越界或者当前格子是0或者已经被访问过,则返回0
}
visited[i][j] = true; // 将当前格子标记为已访问
int count = 1; // 当前格子的面积为1
// 递归访问上下左右四个相邻格子
count += dfs(i-1, j, visited); // 上
count += dfs(i+1, j, visited); // 下
count += dfs(i, j-1, visited); // 左
count += dfs(i, j+1, visited); // 右
return count;
}
int main() {
cin >> n; // 输入方阵阶数
grid.resize(n, vector<int>(n)); // 初始化grid数组
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> grid[i][j]; // 输入方阵元素
}
}
// 遍历所有格子,找到第一个为1的格子,计算其所在小岛的面积
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (grid[i][j] == 1) {
vector<vector<bool>> visited(n, vector<bool>(n, false)); // 初始化visited数组
int area = dfs(i, j, visited); // 计算小岛面积
cout << area << endl; // 输出面积
return 0; // 找到第一个小岛即退出程序
}
}
}
return 0;
}
```
运行上述代码,输入样例数据,即可得到输出结果:
```
9
```
阅读全文