(笔试)寻找三角形

题目

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

输入用例
5
R 0 0 0
R 0 4 0
R 0 0 3
G 92 14 7
G 12 16 8
输出

6.00000

思路:
这个题,难点在于如何求出空间内三点确定的三角形面积,有两种方法:
第一种 比较麻烦,先用两个点A,B确定一条直线方程,再求出它的法线的斜率,再让另外一点C经过该斜率的直线就能确定法线的方程,两个方程连立得到交点D,AB间距离就是三角形的底,CD就是三角形的高,(AB*CD)/2就得到了三角形面积
第二种 利用海伦公式,空间内三点确定的三角形面积S = √p(p-a)(p-b)(p-c),
就可求出三角形面积

代码:

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Scanner;

public class TriangleArea {
   
	public static class Point{
   
		double x,y,z;
		String color;

		public Point(String color,double x,double y,double z) {
   
			this.x = x;
			this.y = y;
			this.z = z;
			this.color = color;
		}
	}
	
	public static double calculateArea(Point a,Point b,Point c) {
   
		double length1 = Math.sqrt(Math.pow(a.x-b.x, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值