Advertisement

题目0013-航天器

阅读量:

题目名称

题目描述

应为航天器一侧安装矩形与正方形太阳电池板(图中所示斜线区域);
然后需安装两根支撑杆(图中黑色竖条);
接着,在支撑杆中间部分进行固定或安装太阳电池板;
然而,在不同位置上各支支撑杆的高度各异;
太阳电池板的有效覆盖面积受制于该侧支撑杆的最大高度。

给定一组整型数组中的支柱高度数据。假设相邻两个支柱之间的间距均为单位长度。探讨如何从两根支柱中选择使得太阳能板覆盖区域最大的组合。

输入描述

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
    
    
      
    
    AI助手

输出

复制代码
    25
    
    
      
    
    AI助手

备注

10米高的支柱与另一根5米高的支柱之间相距有五米远;其中较高的那根柱子的高度与较矮者相同;两者之间的区域形成的形状是一个边长为五米的正方形;其围成的区域总面积则为25平方米。
无论选取哪两根其他类型的支柱所能围成的最大区域面积均不超过上述计算值;由此可见,在所有可能的选择中最大可围成的区域面积即为25平方米。

参考解题 Java

复制代码
    import java.util.Arrays;
    import java.util.Scanner;
    
    /** * Created with IntelliJ IDEA.
     * Author: Amos
     * E-mail: amos@amoscloud.com
     * Date: 2020/11/30
     * Time: 11:44
     * Description:
     */
    public class Main0013 {
      public static void main(String[] args) {
    try (Scanner scanner = new Scanner(System.in)) {
      String line = scanner.nextLine();
    
      solution(line);
    }
    
      }
    
      private static void solution(String line) {
    String[] split = line.split(",");
    long[] longs = Arrays.stream(split)
        .mapToLong(Long::parseLong)
        .toArray();
    
    long res = 0;
    for (int i = 0; i < split.length; i++) {
      for (int j = i + 1; j < split.length; j++) {
        long area = Math.min(longs[i], longs[j]) * (j - i);
        res = Math.max(res, area);
      }
    }
    
    System.out.println(res);
      }
    }
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI助手

全部评论 (0)

还没有任何评论哟~