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

简答题

题目描述:

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

编程实现:

有一个N*M的矩阵方格,其中有些方格中有奖品,有些方格中没有奖品。小蓝需要从N*M的矩阵中选择一个方形区域,如果所选的正方形区域的一条对角线方格中都有奖品,其他方格都没有奖品,就会获得所选区域中的所有奖品,否则不能获得奖品。

当给出N和M的值,及N*M的矩阵方格中摆放的奖品情况

例如:N=5,M=6,奖品情况如下:

选择上图红色正方形区域,可以获得最多的4个奖品。

输入描述

第一行输入两个整数N和M(1≤N≤100,1≤M≤100),N表示矩阵的行数,M表示矩阵的列数,两个整数之间一个空格隔开

接下来输入N行,每行包括M个0或者1(0表示方格中没有奖品,1表示方格中有奖品),0或者1之间一个空格隔开

输出描述

输出一个整数,表示最多可获得的奖品数


样例输入

5 6
1 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
0 1 0 0 0 1
1 0 1 0 0 0

样例输出

4

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

答案:

```pythonN, M = map(int, input().split())matrix = []for _ in range(N):matrix.append(list(map(int, input().split())))max_prizes = 0for i in range(N - 2):for j in range(M - 2):has_prize = Truefor k in range(3):for l in range(3):if matrix[i + k][j + l] == 0:has_prize = Falsebreakif not has_prize:breakif has_prize:prizes = sum(matrix[i + k][j + l] for k in range(3) for l in range(3))max_prizes = max(max_prizes, prizes)print(max_prizes)```

解析:

【喵呜刷题小喵解析】:
本题要求找到矩阵中的一个正方形区域,使得该区域的一条对角线方格中都有奖品,其他方格都没有奖品,并输出最多可获得的奖品数。

首先,我们需要读取矩阵的行数N和列数M,以及矩阵中的每个方格是否有奖品(0表示没有奖品,1表示有奖品)。

然后,我们遍历矩阵中的每个3x3的正方形区域,检查该区域的一条对角线方格中是否有奖品,其他方格是否都没有奖品。如果有,则计算该区域中的奖品数,并更新最大奖品数。

最后,输出最大奖品数即可。

注意,由于题目中要求输入函数的括号中不允许添加任何信息,因此我们在读取输入时使用了`input().split()`函数来将输入的字符串按照空格分割成列表,然后再将列表中的每个元素转换为整数。
创作类型:
原创

本文链接:题目描述: (注.input()输入函数的括号中不允许添加任何信息) 编程实现: 有一个N*M的矩阵

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

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

分享考题
share