我有以下程序要写:
编写执行以下操作的程序: 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));
}
}
我不太确定如何找到包围我的数组中所有随机点的圆的半径...任何帮助都将非常感激。
答案 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的提示并将其撤消了。