我需要帮助编写一个程序,该程序以(X,Y)形式给出指定数量的坐标点.将给出的分数是该计划的第一行;它可以通过扫描仪读入.
我需要用x = a和y = b来计算覆盖所有点的最小面积.因此,该区域将是* b(矩形区域).
但是,必须移除一个坐标点(X,Y)以优化该区域.被移除的点应尽可能地减小区域.我需要帮助编写算法才能这样做.
样本输入
4
2 4
1 1
5 2
17 25
样本输出
12
在此示例中,输入的第一行(4)表示将输入四个点.接下来的四行是形式(x,y)的坐标.最后一点是(17,25)被移除作为离群值,留下前三个点.
如果剩下的三个点都是图形,它们都可以在一个方框内(3乘4),因此输出为12; (3 * 4).这条线就像在这个例子中那样可以.然而,异常值并不总是最后一点,或者非常大.异常值可能非常小,该区域只需要最小化.
–
这是我到目前为止(我知道它不是很多……) – 请帮助我!
它主要是我需要帮助的算法..
import java.io.*; import java.util.*; public class Area { public static void main(String args[]) { Scanner scan = new Scanner(system.in); int numOfPoints = scan.nextInt(); int Xcoordinates[] = new int[numOfPoints]; int Ycoordinates[] = new int[numOfPoints]; for (int i = 0; i <= numOfCows - 1; i++) { Xcoordinates[i] = scan.nextInt(); Ycoordinates[i] = scan.nextInt(); } } }
for (int i = 0; i <= Xcoordinates.length; i++) { //loop through array compare values,and determine outlier int lowestXValue = [find lowest x value] int highestXValue = [find highest x value; not outlier] } remove xcoordinates[outlier] remove ycoordinates[outlier] int xLength = highestXValue - lowestXValue - 1 // -1 because can be on line for (int i = 0; i <= Ycoordinates.length; i++) { //loop through y array int lowestYValue = [find lowest y value] int highestYValue = [find highesy Y value] } int yLength = highestYValue - lowestYValue - 1; int BoxArea = yLength * xLength System.out.println(BoxArea);