zoukankan      html  css  js  c++  java
  • 百度2017春招笔试真题编程题集合之寻找三角形

    题目描述

    三维空间中有N个点,每个点可能是三种颜色的其中之一,三种颜色分别是红绿蓝,分别用'R', 'G', 'B'表示。 现在要找出三个点,并组成一个三角形,使得这个三角形的面积最大。但是三角形必须满足:三个点的颜色要么全部相同,要么全部不同。

    输入描述:

    首先输入一个正整数N三维坐标系内的点的个数.(N <= 50) 接下来N行,每一行输入 c x y z,c为'R', 'G', 'B' 的其中一个。x,y,z是该点的坐标。(坐标均是0到999之间的整数)

    输出描述:

    输出一个数表示最大的三角形面积,保留5位小数。

    输入例子:

    5

    R 0 0 0

    R 0 4 0

    R 0 0 3

    G 92 14 7

    G 12 16 8

    输出例子:

    6.00000

    参考答案

     1 import java.util.*;
     2 public class FindTriangle {
     3     public static void main(String[] args) {
     4         Scanner sc = new Scanner(System.in);
     5 
     6         int n = sc.nextInt();//点的个数
     7         sc.nextLine();
     8         String[] nums = new String[n];
     9         double temp = 0.0;
    10         double area = Double.MIN_VALUE;
    11         for (int i = 0; i < n; i++) {
    12             nums[i] = sc.nextLine();
    13         }
    14 
    15         char[] colors = new char[n];
    16         for (int i = 0; i < n; i++) {
    17             colors[i] = nums[i].split(" ")[0].charAt(0);
    18         }
    19         int[] x = new int[n];
    20         for (int i = 0; i < n; i++) {
    21             x[i] = Integer.parseInt(nums[i].split(" ")[1]);
    22         }
    23 
    24         int[] y = new int[n];
    25         for (int i = 0; i < n; i++) {
    26             y[i] = Integer.parseInt(nums[i].split(" ")[2]);
    27         }
    28 
    29         int[] z = new int[n];
    30         for (int i = 0; i < n; i++) {
    31             z[i] = Integer.parseInt(nums[i].split(" ")[3]);
    32         }
    33 
    34         for (int i = 0; i < n; i++) {
    35             for (int j = i + 1; j < n; j++) {
    36                 for (int k = j + 1; k < n; k++) {
    37                     //判断颜色是否全部相等或全部不等
    38                     if (colors[i] == colors[j] && colors[j] == colors[k] ||
    39                             colors[i] != colors[j] && colors[j] != colors[k] && colors[i] != colors[k]) {
    40                         double a = Math.pow(Math.pow(Math.abs(x[i] - x[j]), 2) +
    41                                 Math.pow(Math.abs(y[i] - y[j]), 2) +
    42                                 Math.pow(Math.abs(z[i] - z[j]), 2), 0.5);
    43                         double b = Math.pow(Math.pow(Math.abs(x[i] - x[k]), 2) +
    44                                 Math.pow(Math.abs(y[i] - y[k]), 2) +
    45                                 Math.pow(Math.abs(z[i] - z[k]), 2), 0.5);
    46                         double c = Math.pow(Math.pow(Math.abs(x[k] - x[j]), 2) +
    47                                 Math.pow(Math.abs(y[k] - y[j]), 2) +
    48                                 Math.pow(Math.abs(z[k] - z[j]), 2), 0.5);
    49 
    50                         double p = (a + b + c) / 2;
    51                       //海伦公式求空间三角形面积
    52                         temp = Math.pow(p * (p - a) * (p - b) * (p - c), 0.5);
    53                         if (area < temp) {
    54                             area = temp;
    55                         }
    56                     }
    57                 }
    58             }
    59         }
    60         System.out.printf("%.5f", area);
    61     }
    62 }
  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    开源数据库在平安的应用实践
    从Oracle到PostgreSQL:Storage Index 特性 vs BRIN 索引
    Cosmos 白皮书
    基于支付场景下的微服务改造与性能优化
    MySQL数据库备份之主从同步配置
    Maven Gradle 区别
    荐书:《PostgreSQL指南:内幕探索》| 留言送书
    SQL、NoSQL、NewSQL,论开源之路谁主沉浮
  • 原文地址:https://www.cnblogs.com/lfeng1205/p/6804234.html
Copyright © 2011-2022 走看看