Algorithmus zur Abdeckung der maximalen Anzahl der Punkte mit einem Kreis von gegebenem radius

Stellen wir uns vor, wir haben ein Flugzeug mit einige Punkte auf.
Wir haben auch einen Kreis von gegebenem radius.

Brauche ich einen Algorithmus, der bestimmt, wie die position des Kreises, es deckt die maximal mögliche Anzahl von Punkten. Natürlich gibt es viele solcher Positionen, so sollte der Algorithmus Rückkehr einer von Ihnen.

Genauigkeit ist nicht wichtig, und der Algorithmus kann kleine Fehler.

Hier ist ein Beispiel Bild:

Algorithmus zur Abdeckung der maximalen Anzahl der Punkte mit einem Kreis von gegebenem radius

Eingang:

  int n (n<=50) – Anzahl der Punkte;

  float x[n] und float y[n] – arrays mit Punkten' in der X-und Y-Koordinaten;

  float r – radius des Kreises.

Ausgabe:

  float cx und float cy – Koordinaten der Mitte des Kreises

Blitz Geschwindigkeit des Algorithmus ist nicht erforderlich, aber es sollte nicht zu langsam sein (weil ich weiß, dass ein paar langsame Lösungen für diese situation).

C++ - code ist bevorzugt, aber nicht obligatorisch.

  • Sie haben keine Einschränkungen bei der Verteilung der Punkte?
  • Das klingt wie ein großer codegolf
  • Ich weiß wirklich nicht so denken. Ziemlich langweilig, keine genaue Bedingungen zum Gewinn... Aber fühlen Sie sich frei, um eine solche Frage.
InformationsquelleAutor Oleh Prypin | 2010-07-12
Schreibe einen Kommentar