华为OD统一考试 -分配土地

题目描述

从前有个村庄,村民们喜欢在各种田地上插上小旗子,旗子上标识了各种不同的数字。

某天集体村民决定将覆盖相同数字的最小矩阵形的土地分配给村里做出巨大贡献的村民,请问此次分配土地,做出贡献的村民种最大会分配多大面积?

输入描述

第一行输入 m 和 n,

  • m 代表村子的土地的长
  • n 代表土地的宽

第二行开始输入地图上的具体标识

输出描述

此次分配土地,做出贡献的村民种最大会分配多大面积

备注

  • 旗子上的数字为1~500,土地边长不超过500
  • 未插旗子的土地用0标识

用例

输入

3 3

1 0 1

0 0 0

0 1 0

输出

9

说明

土地上的旗子为1,其坐标分别为(0,0),(2,1)以及(0,2),为了覆盖所有旗子,矩阵需要覆盖的横坐标为0和2,纵坐标为0和2,所以面积为9,即(2-0+1)*(2-0+1)= 9

输入

3 3

1 0 2

0 0 0

0 3 4

输出

1

说明

由于不存在成对的小旗子,故而返回1,即一块土地的面积。

题目解析

根据用例1说明来看,最小矩形需要覆盖相同数字得所有旗子。

土地上的旗子为1,其坐标分别为(0,0),(2,1)以及(0,2),为了覆盖所有旗子,矩阵需要覆盖的横坐标为0和2,纵坐标为0和2,所以面积为9,即(2-0+1)*(2-0+1)= 9

但是这产生一个问题?比如下图所示:

如果我要覆盖住所有的数字1,那么必然会同时覆盖了数字2,3,此时该怎么办呢?

题目没有说怎么处理,那么我理解就不需要管,只需要保证覆盖所有1的矩形最小就行。

本题解题思路很简单,只需要统计出相同数字的出现的“所有坐标位置”中:

  • 最小的横坐标(矩形最上面一行的行号)
  • 最大的横坐标(矩形最下面一行的行号)
  • 最小的纵坐标(矩形最左边一列的列号)
  • 最大的纵坐标(矩形最右边一列的列号)

即可。比如:前面图示中数字1的所有坐标位置(1,1)、(1,3)、(2,4)、(3,1)、(3,3)中:

  • 最小的横坐标:1
  • 最大的横坐标:3
  • 最小的纵坐标:1
  • 最大的纵坐标:4

那么包含所有数字1的最小矩形面积为:

(最大的横坐标 - 最小的横坐标 + 1) * (最大的纵坐标 - 最小的纵坐标 + 1)

imp

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024华为OD机试卷题 文章被收录于专栏

本专栏给大家提供了华为2024最新华为OD 题目汇总。华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。

全部评论
点赞 回复 分享
发布于 09-21 09:10 四川

相关推荐

11-05 18:30
门头沟学院 Java
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-01 20:56
已编辑
百度一面1h(10.28) 1.自我介绍 2.项目介绍 3.八股 4.两数之和(map 5.接受一个箭头函数作为参数,返回一个可多次执行的新函数(面试官说思路大致正确) 百度二面1h(11.1) 1.自我介绍 2.项目难点?视频流格式,视频压缩做过吗? table,树形结构? 3.typescript?用过哪些,和java的区别? 4.讲讲tcp连接 输入域名到显示页面过程 5.cssom树?讲讲查找某个class元素的过程,如果有id,class等多个选择器,怎么进行匹配? 6.网络安全?讲讲前端防御性编程?(蒙 7.用户登陆的防御方式?中间人攻击怎么办? 8.usecount...
AI牛可乐:哎呀,面试的感觉好像有点紧张呢,不过你已经很棒了,能坚持到二面已经很厉害了!👍牛可乐在这里给你加油打气哦!面试的内容听起来好专业,不过我相信你一定有自己的见解。悄悄问一下,面试的时候紧张吗?😊 关于你提到的技术问题,如果你愿意的话,我们可以一起探讨一下,比如那个“两数之和”的问题,你是怎么想的呢?或者,如果你现在有什么不太确定的地方,牛可乐可以帮你一起想想解决办法哦! 对了,如果你想私下聊聊,可以点击牛可乐的头像给我发私信哦,我们可以一起探讨更多求职的小秘密!💌 现在,你想聊聊哪个技术点呢?还是想先放松一下,聊点别的?牛可乐在这里等你哦!😉
查看12道真题和解析 牛客在线求职答疑中心
点赞 评论 收藏
分享
10-17 12:16
同济大学 Java
7182oat:快快放弃了然后发给我,然后让我也泡他七天最后再拒掉,狠狠羞辱他一把😋
点赞 评论 收藏
分享
挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务