Array/Matrix auswerten.

Status
Nicht offen für weitere Antworten.

JKostiK

Neues Mitglied
Hallo!
Hat jemand eine Idee zu folgendem Problem:

Ich habe ein 5x5 Array...

0 0 1 1 0
0 0 0 1 0
0 0 0 0 0
0 0 1 1 0
0 1 0 0 1

...nun möchte ich als Ergebnis die Anzahl der Einsen aus dem grösten Block bestimmen. In diesem Fall sind es drei.
Ein Block besteht aus benachbarten (nicht diagonal) Einsen. Aus dem Beispiel: Der obere Block hat drei, der nächste zwei, dann eins und noch eins... insgesammt sind es vier Blöcke.

Ich habe keinen Schimmer wie ich die Blöcke bestimme.

Hiiiiilfe! DANKE!

PS: Dies möchte ich in natürlich in Java realisieren.
 

Marco13

Top Contributor
Durch den Array durchlaufen, und sobald eine 1 gefunden wird... etwa so
Code:
int countOnes(int a[][], int x, int y) // Array, und die Position, an der die 1 steht
{
    if (x,y außerhalb der arraygrenzen) return 0;
    if (a[x][y]!=1) return 0;
    int count = 1;
    a[x][y] = 0; // damit man nichts doppelt zählt
    count += countOnes(a, x-1, y);
    count += countOnes(a, x+1, y);
    count += countOnes(a, x, y-1);
    count += countOnes(a, x, y+1);
    return count;
}
 

JKostiK

Neues Mitglied
:toll: Suuuper! Habe es zum Laufen gebracht.
:meld: Es fehlt mir aber trotzdem das Verständnis wie das Ganze im Detail funktioniert.
...Es wird in der Funktion die selbe Funktion mehrmals aufgerufen. Müsste das nicht eigentlich eine Endlosschleife ergeben? ???:L Bitte hilf mir diese Wissenslücke zu schliessen.
 

Quaxli

Top Contributor
Was Dir Marco13 gezeigt hat, nennt sich rekursiver Methodenaufruf. Eine Methode, die sich selbst wieder aufruft. Google mal mit dem Stichwort "Rekursion", da findest Du bestimmt einige Definitionen dazu.

Wikipedia - Rekursion
 

Marco13

Top Contributor
Ja, in anbetracht der fortgeschrittenen Zeit gestern war ich etwas sparsam mit erklärungen - aber wenn du den Code mal per Hand(!) an einem ca. 4*4 felder Großen Beispiel nachvollziehst, wird er sich glaubich erschließen.

Das wichtige (zum Verhindern der Endlos"schleife" (eigentlich: Endlosrekursion)) ist, dass es einen "Basisfall" gibt, der irgendwann erreicht wird. Hier ist der Basisfall der, dass man entweder ausßerhalb der Arraygrenzen liegt, oder ein Feld mit einer 0 gefunden hat. Die 4 Aufrufe bewirken jeweils, dass man "einen Schritt weiter in eine Bestimmte Richtung läuft". Und damit kommt man garantiert irgendwann an eine Arraygrenze, d.h. das ganze hört garantiert irgendwann mal auf.

Ein leicht nachvollziehbares Beispiel für eine Rekursion ist die rekursive Berechnung der Fakultäts-Funktion - kannst mal danach suchen, falls du nicht schon drüber gestolpert bist.
 
G

Guest

Gast
Alles klar, DANKE!
Nur noch eine Kleinigkeit, diese Zeile verstehe ich nicht "int count = 1;". Wird da nicht die Variable "count" bei jedem erneuten Funktionsaufruf wieder auf 1 zurückgesetzt? :bahnhof: Es funktioniert zwar... aber wie?
 

Drake

Bekanntes Mitglied
Hallo

nimm dir ein Blatt Papier und einen Stifft, die Farbe sei dir überlassen, und 'spiele' das anhand einiger Testdaten einfach durch.
Um es zu verstehen schau dir vielleicht wirklich den genannten Link zur Rekursion an und gehe den Algo einfach mit den jeweils benutzen Werten und deren Ergebniss durch. Alles andere bringt dir nichts, jedenfalls wenn du wissen möchtest wie es funktioniert und nich einfach eine Antwort haben willst die du auswendig lernen kannst.
Ja, du musst womöglich ein klein wenig Zeit investieren, aber in Relation gesetzt zu der Zeit die du für suchen und warten bereit warst zu opfern sollte es nicht der Rede Wert sein.

mfg
Drake
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Spielfelder erstellen mit Jogl Java durch ein Koordinaten Array Spiele- und Multimedia-Programmierung 1
A Multidimensionler Array - Elemente vergleichen (TicTacToe) Spiele- und Multimedia-Programmierung 4
T LWJGL: Terrain-Texturen / 2D-Array in Shader? Spiele- und Multimedia-Programmierung 2
J Frage zum Einlesen einer .wav in ein byte Array Spiele- und Multimedia-Programmierung 3
B klassenobjekte als Array Spiele- und Multimedia-Programmierung 3
Seikuassi gluLookAt mit glMultMatrix und Array Spiele- und Multimedia-Programmierung 3
Androbin mehr-dimensionale(n) Array(s) "drehen" Spiele- und Multimedia-Programmierung 8
N [SLICK] Rectangle in Array Speichern Spiele- und Multimedia-Programmierung 3
L Slick-Image aus byte-array erzeugen Spiele- und Multimedia-Programmierung 2
A Patter Array Eintrag vergleichen geht nicht!!! Spiele- und Multimedia-Programmierung 3
J A*, Array und KI Spiele- und Multimedia-Programmierung 5
L Tile Map als Array? Spiele- und Multimedia-Programmierung 23
O In Array Pulk von gleichen Zahlen finden. Spiele- und Multimedia-Programmierung 4
K Schiebepuzzle Array Zufallszahlen Problem Spiele- und Multimedia-Programmierung 8
R Schach, Array und GUI Verknüpfung, enum Spiele- und Multimedia-Programmierung 16
B Array und Parameter Spiele- und Multimedia-Programmierung 38
S Methode verändert mein Eingabe Array oO Spiele- und Multimedia-Programmierung 6
Z Kugeln aufgrund von Daten aus einem Array verschieben Spiele- und Multimedia-Programmierung 2
P int-Array zu BufferedImage (performance?) Spiele- und Multimedia-Programmierung 14
D Array aus Objekten Spiele- und Multimedia-Programmierung 2
T Bild als mehrdimesionaler Array Spiele- und Multimedia-Programmierung 4
H Jpeg Bildinformation in ein Char Array speichern? Spiele- und Multimedia-Programmierung 4
C Array 'Wiederbenuezten' - Map Spiele- und Multimedia-Programmierung 4
B Ein Array für Buttons Spiele- und Multimedia-Programmierung 8
T 2 Dimensionales Array herausschreiben Spiele- und Multimedia-Programmierung 4
N Array mit verschiedenen Klassen Spiele- und Multimedia-Programmierung 15
G 2 dim. Pixel Array in AWT? Spiele- und Multimedia-Programmierung 7
A Schachspiel auf Konsole mit Matrix Spiele- und Multimedia-Programmierung 4
2 Ein Zufallsweg bzw. Weg in einer 2dim Matrix finden. Spiele- und Multimedia-Programmierung 21
S matrix cannot be inverted Spiele- und Multimedia-Programmierung 9
M LED DOT Matrix Spiele- und Multimedia-Programmierung 7
D Spiel-Bilddaten auswerten Spiele- und Multimedia-Programmierung 7

Ähnliche Java Themen

Neue Themen


Oben