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

简答题

有一张 N 行 N 列的网格纸,网格中每个小格子都是 1×1 的正方形,有些格子被填充成橙色。请数一数橙色区域一共有多少个矩形。

例如:N = 4,4 行 4 列的网格纸如下图:

图中网格纸的橙色区域一共有 7 个矩形。

输入描述:

第一行输入一个正整数 N(2≤N≤50)

接下来输入 N 行,每行 N 个整数(整数只能为 1 或 0 ),其中 1 表示填充成橙色,0 表示没有填充成橙色,整数之间以一个空格隔开

输出描述:

输出一个整数,表示橙色区域的矩形数量


样例输入:

4
1001
0000
1001
0110

样例输出:

7

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

答案:

```def countRectangles(N, grid):count = 0for i in range(N):for j in range(N):if grid[i][j] == 1:row_start = icol_start = jwhile row_start < N and grid[row_start][col_start] == 1:row_start += 1while col_start < N and grid[i][col_start] == 1:col_start += 1rect_width = row_start - irect_height = col_start - jcount += rect_width * rect_heightreturn countN = int(input().strip())grid = []for _ in range(N):grid.append(list(map(int, input().strip().split())))print(countRectangles(N, grid))```

解析:

【喵呜刷题小喵解析】:

这道题是一道计数题,我们需要计算给定网格中橙色区域的矩形数量。

首先,我们可以遍历整个网格,对于每个橙色格子,我们尝试找到其所在矩形的宽度和高度。

具体地,我们可以从当前格子开始,向上和向右扩展,直到遇到非橙色格子为止。这样,我们就可以得到当前格子所在矩形的宽度和高度。

然后,我们将这个矩形的宽度和高度相乘,就得到了这个矩形的面积。

最后,我们将所有矩形的面积加起来,就得到了橙色区域的矩形数量。

具体实现时,我们可以使用两个嵌套的循环来遍历整个网格。对于每个橙色格子,我们分别向上和向右扩展,直到遇到非橙色格子为止。然后,我们计算矩形的宽度和高度,并将矩形的面积加到计数器中。

最后,我们返回计数器的值作为结果。

注意,在输入时,我们需要将输入的字符串转换成整数列表,以便进行后续的计算。

在输出时,我们只需要输出计数器的值即可。
创作类型:
原创

本文链接:有一张 N 行 N 列的网格纸,网格中每个小格子都是 1×1 的正方形,有些格子被填充成橙色。请数一

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

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

分享考题
share