[华为OD] 给航天器一侧加装长方形或正方形的太阳能板 100

给航天器一侧加装长方形或正方形的太阳能板(图中的红色斜线区域),需要先安装两个支

柱(图中的黑色竖条),再在支柱的中间部分固定太阳能板。但航天器不同位置的支柱长度

不同,太阳能板的安装面积受限于最短一侧的那根支柱长度。如图:

现提供一组整形数组的支柱高度数据,假设每根支柱间距离相等为 1 个单位长度,计算如

何选择两根支柱可以使太阳能板的面积最大。

输入描述:

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

注:支柱至少有 2 根,最多 10000 根,能支持的高度范围 1~10^9 的整数。柱子的高

度是无序的,例子中递减只是巧合。

输出描述:

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

25

补充说明:10 米高支柱和 5 米高支柱之间宽度为 5,高度取小的支柱高也是 5,面积为 25。任取其

他两根支柱所能获得的面积都小于 25。所以最大的太阳能板面积为 25。

示例 1

输入:

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

输出:

25

题解:

假设取横坐标是i,j的两个支柱,对应的竖条长度就是a[i],a[j],那么面积就是(j-i)*Math.min(a[i],a[j])

那么直接双循环,获取到最大值就可以了。

java 复制代码
import java.util.Scanner;

public class Aircraft {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] lengthArray = sc.nextLine().split(",");

        int max = 0;
        for (int i = 0; i < lengthArray.length; i++) {
            for (int j = i + 1; j < lengthArray.length; j++) {
                max = Math.max(max, (j - i) * Math.min(Integer.valueOf(lengthArray[i]), Integer.valueOf(lengthArray[j])));
            }
        }

        System.out.println(max);
    }
}
相关推荐
Amor风信子2 天前
华为OD机试真题---整数对最小和
python·算法·华为od
Amor风信子4 天前
华为OD机试真题---计算三叉搜索树的高度
数据结构·算法·华为od
hello!树5 天前
寻找两个正序数的中位数(C)
算法·华为od
什码情况6 天前
报数游戏 - 华为OD统一考试(E卷)
java·python·算法·游戏·华为od·笔试·华为od机试
哪 吒8 天前
华为OD机试 - 密钥格式化(Python/JS/C/C++ 2024 E卷 100分)
javascript·python·华为od
什码情况10 天前
工作安排 - 华为OD统一考试(E卷)
java·c++·python·算法·华为od·华为od机试
郝晨妤11 天前
鸿蒙【项目打包】- .hap 和 .app;(测试如何安装发的hap包)(应用上架流程)
华为od·华为·harmonyos·鸿蒙
爱棋笑谦15 天前
二叉树计算
java·开发语言·数据结构·算法·华为od·面试
哪 吒16 天前
华为OD机试 - 第 K 个字母在原来字符串的索引(Python/JS/C/C++ 2024 E卷 100分)
javascript·python·华为od
哪 吒17 天前
华为OD机试 - 报数问题 - 约瑟夫环(Java 2024 E卷 100分)
java·python·华为od