PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wimpel-problem



Beuteldachs
01-06-2006, 11:23
hallo. ich habe ein problem und weiß nicht mehr weiter. und zwar muss ich wimpel verschiedener farben rekursiv in allen möglichen kombinationsmöglichkeiten zu einer wimpelkette anordnen. wie kann ich das denn in java umsetzen?
ein beispiel wie ich das meine. ich habe zb 3 blaue, 2 rote und einen grünen wimpel. da kann ich die ja zb so anordnen b b b r r g , r r g b b b .....b r g b r b usw usw.... und nun weiß ich nicht wie ich diese ganzen möglichkeiten rekursiv erstellen kann. hoffe mir kann jemand helfen.... danke

quinte17
01-06-2006, 13:21
mhh, ist ein recht interressantes problem.

sind noch mehr farben möglich?

theoretisch brauchst du nur ein array, was alle zeichen beinhaltet die du verwenden darfst, also in deinem beispiel:
b b b r r g

und dieses array musst du ja nur nach einem bestimmten muster umsortieren, um alle möglcihkeiten zu bekommen. ob dies auch rekursiv machbar ist weiß ich nicht.
vielleicht aber hilfts ja, um auf die idee zu kommen :D

greetz

Beuteldachs
01-06-2006, 13:44
man kann die farben rot,blau,gelb,weiß,schwarz haben.
das problem ist halt jetzt eine rekusive methode zu erschaffen die eben alle kombinationen der wimpel erstellt...

mwanaheri
01-06-2006, 18:30
Du könntest so vorgehen:

schreibe eine Methode mit zwei Startparametern:
1. Ein Array mit den gültigen Werten
2. ein Array, das zu vervollständigen ist.
und einer Collection als Rückgabewert.

Die Methode nimmt nun das zu vervollständigende Array und ermittelt, ab welcher Position es leer ist. Nun kommt die entscheidende Verzweigung:

Die Methode legt Kopien des Arrays an und füllt die entsprechende Position reihum mit den gültigen Werten.

Die entscheidende Verzweigung:
ist das Array nun ganz gefüllt, werden die Arrays in die Collection gepackt und zurückgegeben.
Ist das Array nicht ganz gefüllt, wird die Methode mit dem neuen Array aufgerufen und die jeweils zurückgegebenen Arrays in die Collection gepackt.

Beuteldachs
01-06-2006, 19:22
Danke für die Lösungsmöglichkeit,
aber eins hab ich noch nicht so richtig verstanden:
wie meinste du das mit den unvollständigen arrays...?
Kannst du das nochmal genauer erklären?
Viel dank!

Beuteldachs
01-06-2006, 19:34
ich hatte es mir so gedacht:
man schaut welcher der Wimpel gibt es am meisten z.B.
wir haben 2xrot 3xblau 1xgelb 4xweiss 2xschwarz
dann dacht ich mir man könnte eine methode schreiben, die das so verteilt:
- das größte zu erst und dann imer verschoben nacheinander - würde dann so aussehen:
1) wsrbgwsrbwbw
2) wrbgwsrbwsbw
3) wbgwsrbwsrbw

und dann die ersten beiden festsetzen und das selbe nochmal ...
dann die ersten 3 festsetzen und so weiter ...

Damit müssten auf jedenfall alle möglichkeiten abgedeckt werden!
Aber das als Algorithmus der nicht mega groß wird zu formulieren pack ich net so richtig ...