【新2023】华为OD机试 - 航天器(Python)

本文介绍了华为OD统一考试B卷中关于航天器的题目,涉及如何计算在不同支柱高度下安装的最大太阳能板面积。提供了一个基于暴力枚举的Python解决方案,强调理解算法和代码的重要性,并给出了代码运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

华为 OD 清单查看地址:blog.youkuaiyun.com/hihell/category_12199275.html

OD统一考试 B 卷:航天器

题目

给航天器一侧加装长方形和正方形的太阳能板(图中的斜线区域);
需要先安装两个支柱(图中的黑色竖条);
再在支柱的中间部分固定太阳能板;
但航天器不同位置的支柱长度不同;
太阳能板的安装面积受限于最短一侧的那支支柱的长度;

现提供一组整型数组的支柱高度数据;
假设每个支柱间的距离相等为一个单位长度;
计算如何选择两根支柱可以使太阳能板的面积最大;

输入

10,9,8,7,6,5,4,3,2,1
注释,支柱至少有两根,最多10000根,能支持的高度范围1 ~ 10^9的整数

柱子的高度是无序的
例子中的递减是巧合

输出

可以支持的最大太阳板面积:(10m 高支柱和 5m 高支柱之间)
25

示例一

输入

10,9,8,7,6,5,4,3,2,1

输出

25

备注

0米高支柱和5米高支柱之间宽度为5,高度取小的支柱高度也是5,面积为25
任取其他两根支柱所能获得的面积都小于25 所以最大面积为25

编码思路

该算法基于暴力枚举,枚举每对数字之间形成的矩形面积并计算最大面积。时间复杂度为 O(n^2),其中 n 为数组长度。由于 Python 中的列表可以自动扩容,因此无需预先设定数组大小。

华为od中的题目“判断牌型”是一道经典的扑克牌小游戏,在游戏中要求我们输入5张扑克牌,然后判断它们的牌型,包括同花顺、四条、葫芦、同花、顺子、三条、两对、一对、高牌这九种不同的牌型。 为了解决这个问题,我们需要首先读入5张扑克牌的牌面,并把它们转化为数字值,然后通过对它们数字大小的比较和数值的统计来识别各种不同的牌型。具体实现方法是: 1.首先读入牌面并转化为数字值。如:{'AC', '5C', 'KD', 'JS', '9D'} 转化为[14, 5, 13, 11, 9]。 2.然后通过对数字大小进行排序,方便后面的牌型判断。如上述牌面排序后为[5, 9, 11, 13, 14]。 3.然后进行数值统计,用某一个数字出现的次数来判断牌型。如上述牌面中5个数字不同,因此不存在葫芦、四条、三条等牌型,只能是高牌、一对、两对、顺子、同花、同花顺中的一种。 4.判断顺子牌型需要判断差值是否都是1,判断同花顺需要先判断是否同花再判断是否顺子。 5.判断两对和一对需要统计数字出现次数,两对需要出现两个数字各两次,一对需要出现一个数字两次。 最后按照规定输出这五张牌的牌型,若牌型为“高牌”则输出最大的一张牌,并以牌型从大到小的顺序依次输出。 通过以上的实现,我们就可以成功识别出输入的五张扑克牌的牌型,并正确输出。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想橡皮擦

如有帮助,来瓶可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值