刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

题目描述:

(注input()输入函数的括号中不允许添加任何信息)

编程实现:

有一片海域划分为N*M个方格,其中有些海域已被污染(用0表示),有些海域没被污染(用1表示)。请问这片N*M海域中有几块是没被污染的独立海域(没被污染的独立海域是指该块海域上下左右被已污染的海域包围,且N*M以外的海域都为已被污染的海域)例如:N=4,M=5,4*5的海域中,已被污染海域和没被污染的海域如下图:

这块4*5的海域,有3块海域(绿色)没被污染,因为每一块的上下左右都被污染的海域包围。

输入描述

第一行输入两个正整数N和M,N表示矩阵方格的行,M表示矩阵方格的列,N和M之间以一个英文逗号隔开

第二行开始输入N行,每行M个数字(数字只能为1或者0,1表示没被污染的海域,0表示已被污染的海域)

输出描述

输出一个整数,表示N*M的海域中有几块是没被污染的独立海域

使用微信搜索喵呜刷题,轻松应对考试!

答案:

```pythonN, M = map(int, input().split(','))matrix = []for i in range(N):matrix.append(list(map(int, input().split())))count = 0for i in range(N):for j in range(M):if i == 0 or i == N - 1 or j == 0 or j == M - 1 or matrix[i][j] == 0:continueif matrix[i - 1][j] == 0 or matrix[i + 1][j] == 0 or matrix[i][j - 1] == 0 or matrix[i][j + 1] == 0:continuecount += 1print(count)```

解析:

【喵呜刷题小喵解析】:

首先,我们需要读取输入的N和M,以及N*M的矩阵。矩阵中的每个元素要么是1(表示未被污染的海域),要么是0(表示已被污染的海域)。

然后,我们遍历矩阵中的每个元素。对于每个元素,我们检查它是否位于矩阵的边缘(即第一行、最后一行、第一列或最后一列),或者它是否被污染的海域包围(即它的上、下、左、右任何一个方向上都有被污染的海域)。如果是这两种情况之一,我们跳过这个元素。否则,我们将计数器count加1,表示找到一个未被污染的独立海域。

最后,我们输出计数器count的值,即未被污染的独立海域的数量。
创作类型:
原创

本文链接:题目描述: (注input()输入函数的括号中不允许添加任何信息) 编程实现: 有一片海域划分为N*

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share