Предположим, что у нас есть плоскость с некоторыми точками на ней. Мы также имеем круг заданного радиуса.
Мне нужен алгоритм, который определяет такое положение круга, что он охватывает максимально возможное количество точек. Конечно, таких позиций много, поэтому алгоритм должен вернуть один из них.
Точность не важна, и алгоритм может совершать небольшие ошибки.
Вот пример картинки:
Input:
int n
(n <= 50) – количество баллов,
float x[n]
и float y[n]
– массивы с координатами X и Y точек
float r
– радиус круга.
Вывод:
float cx
и float cy
– координаты центра окружности
Молниеносная скорость алгоритма не требуется, но она не должна быть слишком медленной (потому что я знаю несколько медленных решений для этой ситуации).
Код С++ является предпочтительным, но не обязательным.