查找包含数组中所有点的圆的半径

时间:2016-02-09 00:24:23

标签: java arrays loops random methods

我有以下程序要写:

  

编写执行以下操作的程序:   1.声明一个大小为20的XYPoint类型的数组。   2.用20个随机点填充数组。 x坐标和y坐标应包含介于-1000和1000之间的值   3.将阵列的内容打印到屏幕上。   4.计算以原点为中心的最小圆的半径,它将包围所有点。这必须在之后完成   所有要点都已创建。   5.打印半径。

到目前为止,这是我的计划:

import net.apcs.classes.XYPoint;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class EncloseInCircle {
    public static Scanner console = new Scanner(System.in);

    public static void main(String[] args) {
        XYPoint a[];
        a = new XYPoint[20];
        XYPoint random;

        for (int i = 0; i < a.length; i++) {
            Random rand = new Random();
            int x = (rand.nextInt(1001) + 10000);
            int y = (rand.nextInt(1001) + 10000);
            random = new XYPoint(x, y);

            a[i] = random;
        }

        System.out.println(Arrays.toString(a));

    }
}

我不太确定如何找到包围我的数组中所有随机点的圆的半径...任何帮助都将非常感激。

3 个答案:

答案 0 :(得分:1)

提示而不提供实际代码,因为您需要从练习中学习并自行编码。

包含离原点最远点的圆将包含更接近原点的所有其他点。

考虑循环遍历所有点并记下离原点最远的距离。您需要使用一个简单的公式来计算每个点与原点的距离。这可以被认为是圆的半径。

答案 1 :(得分:1)

这听起来像是一个家庭作业问题。为了解决这些问题,我发现很容易首先解决一个小问题,即1点,并从那里开始工作。

所以,例如,在1点的平凡情况下,你会如何找到一个圆的半径(以(0,0)为中心),这将包含这一点?这应该是直截了当的。现在关于2分的情况? 3?

当您处理更高阶的情况时,算法应该显示出来。

答案 2 :(得分:0)

因为我喜欢递归。

假设我已经解决了n-1的问题而我正在尝试为n点解决问题:

我只计算前n-1个点的解(圆)是否包含第n个点。无论是否要做,你应该做的事情应该在每种情况下都很明显。基本情况n = 1的解决方案也应该是显而易见的。

我刚刚接受了https://stackoverflow.com/a/35281932/348975的提示并将其撤消了。