2016-02-09 3 views
-1

У меня есть следующие программы для записи:Нахождение радиуса окружности, что содержит все точки в массиве

Напишите программу, которая выполняет следующие действия: 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)); 

    } 
} 

Я не совсем уверен, как найти радиус окружности, который охватывает все случайные точки в моем массиве ... Любая помощь будет очень оценили.

+2

домашняя домашняя работа не является хорошим использованием этого сайта – activedecay

+1

https://en.wikipedia.org/wiki/Pythagorean_theorem –

ответ

1

Это звучит как вопрос домашней работы. Чтобы решить подобные проблемы, мне легко сначала решить проблему для тривиального случая, т. Е. 1 балл, и начать работать оттуда.

Так, например, в тривиальном случае 1 точки, как бы вы нашли радиус круга (в центре (0,0)), который будет охватывать эту точку? Это должно быть просто. Теперь о случае по 2 очка? 3?

Алгоритм должен проявлять себя, когда вы работаете через случаи более высокого порядка.

+0

Спасибо. Я понял! – ch1maera

1

Подсказка, не указывая фактический код, потому что вам нужно научиться упражнению и запрограммировать его самостоятельно.

Круг, который охватывает самую дальнюю точку от начала координат, будет охватывать все остальные точки, которые ближе к началу координат.

Рассмотрите возможность прокрутки всех ваших точек и отметьте максимальное расстояние от начала координат. Вам нужно будет использовать простую формулу для вычисления расстояния от начала координат для каждой точки. Это можно считать радиусом круга.

+0

Спасибо! Я понял! – ch1maera

0

Так как мне нравится рекурсия.

Предполагая, что я решил эту проблему для n-1, и я пытаюсь решить для n пунктов:

Я бы просто вычислить, если решение (круг) для первых п-1 точек содержит п-ю точку. Это либо делает, либо не делает, и то, что вы должны делать, должно быть очевидным в каждом случае. Решение для базового случая n = 1 также должно быть очевидным.

Я только что взял подсказку https://stackoverflow.com/a/35281932/348975 и отменил ее.

Смежные вопросы