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

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

Мне нужен алгоритм, который определяет такое положение круга, чтобы оно охватывало максимально возможное количество точек. Конечно, таких позиций много, поэтому алгоритм должен вернуть одну из них.
Точность не важна, и алгоритм может делать небольшие ошибки.

Вот пример изображения:

Входные данные:
  int n (n <= 50) - количество баллов;
  float x[n] а такжеfloat y[n] - массивы с точками координат X и Y;
  float r - радиус круга.

Выход:
  float cx а такжеfloat cy - координаты центра круга

Молниеносная скорость алгоритма не требуется, но она не должна быть слишком медленной (потому что я знаю несколько медленных решений для этой ситуации).

Код C ++ предпочтителен, но не обязателен.

Ответы на вопрос(10)

Ваш ответ на вопрос