2017-11-04 6 views
0

Gegeben ein 30 x 30 Bild von roten und grünen Pixeln, gespeichert als ein Array von 0s und 1s, wobei 1 rot und 0 grün ist.Gefundene Abschnitte eines Graphalgorithmus finden

Das Bild beginnt als grün und zufällige Muster von rot wird oben gezeichnet.

Alle äußeren Pixel des Bildes sind ebenfalls rot.

Die Frage ist, wie man jede einzelne grüne Tasche füllt, die nicht mit der größten grünen Tasche mit rot verbunden ist?

+0

Sie haben nicht angegeben, welcher Ansatz Sie verwenden, um Pixel zu füllen. – MBo

Antwort

1

Get/write Ein Flood-Fill-Algorithmus, der ab einem bestimmten Pixel alle verbundenen Pixel mit einem anderen Wert füllt und dabei die Pixel zählt.

Haben Sie eine und eine Point biggestStartPoint = null Variable mit den angegebenen Anfangswerten.

Scannen Sie das Bild.

Wenn Sie ein grünes Pixel erhalten, füllen Sie es mit Blau.

Wenn die Zahl dieser Flutfüllung größer als biggestSize ist, füllen Sie den alten größten Bereich (von biggestStartPoint) mit rot. Speichern Sie die neue Zählung und starten Sie das Pixel in biggestSize und biggestStartPoint.

Wenn die Anzahl nicht größer ist, füllen Sie die (jetzt blaue) Region mit rot und lassen Sie die Variablen unverändert.

Schließlich füllen Sie die größte Fläche mit Grün.

Verwandte Themen