Algorithmus zur Abdeckung der maximalen Punktzahl mit einem Kreis mit gegebenem Radius
Stellen wir uns vor, wir haben ein Flugzeug mit einigen Punkten drauf. Wir haben auch einen Kreis mit dem angegebenen Radius.
Ich brauche einen Algorithmus, der die Position des Kreises so bestimmt, dass er die maximal mögliche Anzahl von Punkten abdeckt. Natürlich gibt es viele solcher Positionen, daher sollte der Algorithmus eine davon zurückgeben.
Präzision ist nicht wichtig und der Algorithmus kann kleine Fehler machen.
Hier ist ein Beispielbild:
Eingang
int n
(n <= 50) - Anzahl der Punkte;
float x[n]
undfloat y[n]
- Arrays mit den X- und Y-Koordinaten der Punkte;
float r
- Radius des Kreises.
Ausgabe
float cx
undfloat cy
- Koordinaten des Kreismittelpunktes
Blitzgeschwindigkeit des Algorithmus ist nicht erforderlich, sollte aber nicht zu langsam sein (da ich einige langsame Lösungen für diese Situation kenne).
C ++ - Code wird bevorzugt, ist aber nicht obligatorisch.