问题描述】 用一个二维方阵(最小为3X3,最大为9X9)表示一片海域。方阵中的元素只由0和1组成。1表示海岸线。计算由海岸线围起来的小岛面积(即:由1围起来的区域中0的个数)。如下图所示6X6方阵表示的小岛面积为9: 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 上述方阵表示的海域满足下面两个要求: 1、小岛只有一个。 2、用1表示的海岸线肯定可以封闭成一个小岛,但有可能是凸的,也有可能是凹的。所以在判断时:对于方阵中的任意一个元素0,如果其位于同一行上的两个1之间,并且位于同一列上的两个1之间,则该元素肯定在1围起来的区域中。不符合该规定的其它情况不考虑。 【输入形式】 先从标准输入中输入方阵的阶数,然后从下一行开始输入方阵的元素(只会输入0或1),各元素之间以一个空格分隔,每行最后一个元素后没有空格,但会有回车换行符。 【输出形式】 在标准输出上输出用整数表示的小岛面积。 【输入样例】 6 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 【输出样例】 9
时间: 2024-01-01 12:03:19 浏览: 72
以下是Python实现的代码:
```python
n = int(input()) # 输入方阵阶数
grid = [] # 存储方阵的列表
for i in range(n):
row = input().split() # 分割输入的行数据
row = [int(x) for x in row] # 将字符串列表转换为整数列表
grid.append(row)
# 定义一个函数,用于计算小岛面积
def dfs(i, j, visited):
if i < 0 or i >= n or j < 0 or j >= n or grid[i][j] == 0 or visited[i][j]:
return 0 # 如果越界或者当前格子是0或者已经被访问过,则返回0
visited[i][j] = True # 将当前格子标记为已访问
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
# 遍历所有格子,找到第一个为1的格子,计算其所在小岛的面积
for i in range(n):
for j in range(n):
if grid[i][j] == 1:
visited = [[False]*n for _ in range(n)] # 初始化visited列表
area = dfs(i, j, visited) # 计算小岛面积
print(area) # 输出面积
exit() # 找到第一个小岛即退出程序
```
运行上述代码,输入样例数据,即可得到输出结果:
```
9
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)