Wie zähle ich Gruppen von gleichen Zellen in einem 2D-Array?

8

Hier ist das Beispiel (zähle schwarze):

Eingabe:

Ausgabe:

%Vor%

Denn jetzt kann ich mir nichts Besseres vorstellen als eine schmerzhafte Wiederholung. Wäre es möglich, diese Gruppen auf eine Rekursionsebene zu bringen? Danke

    
Patryk 15.10.2012, 18:50
quelle

3 Antworten

2

Setze alle schwarzen Quadrate als Knoten. Die Verbindung zwischen schwarzen Quadraten (wenn die Quadrate nebeneinander liegen) ist eine Kante.

Dies gibt Ihnen einen Graph .

Ein DFS in der Grafik zeigt Ihnen alle Gruppen. Beachten Sie, dass DFS von Natur aus rekursiv ist.

    
amit 15.10.2012, 18:58
quelle
0

Zu Beginn wird jede Zelle "nicht besucht".

Ich würde durch die Zellen iterieren, bis Sie eine "nicht besuchte" schwarze Zelle treffen. Jede weiße Zelle, die Sie bis zu diesem Punkt getroffen haben

Sobald Sie eine schwarze Zelle getroffen haben, "expandieren" Sie sie, wenn möglich, in alle Richtungen (ähnlich wie bei "floodfilling"). Sie erweitern so lange wie möglich und markieren alle besuchten Zellen als "besucht". Nachdem Sie das getan haben, zählen Sie, wie viele schwarze Zellen Sie infiziert haben, und Sie wissen, wie groß die Gruppe war. Nachdem Sie die Gruppe erkannt haben, fahren Sie mit der nächsten "nicht besuchten" schwarzen Zelle fort.

    
phimuemue 15.10.2012 18:57
quelle
0

Sie können den Algorithmus für Kennzeichnung von verbundenen Komponenten mit 4-Konnektivität verwenden

    
MBo 15.10.2012 19:03
quelle

Tags und Links