ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
585
585
EMPFEHLEN
-
Hallo Zusammen,
ich stehe gerade etwas extrem auf dem Schlauch. Ich habe das Alphabet (26 Buchstaben) und möchte alle Möglichkeiten ausschöpfen die Buchstaben in 8 Felder zu verteilen. Dabei soll die Reihenfolge im Alphabet allerding erhalten bleiben.
Also das ist so gemeint. Ich mach mal ein Bsp nur mit A,B und C und 3 möglichen "Feldern":
_ = Feld ist leer.
Möglichkeit 1:
ABC | _ | _
AB | C | _
A | BC | _
A | B | C
Vielleicht hat ja jemand schonmal sowas gemacht und kann mir den Code zur Verfügung stellen. Oder mir einen Lösungsansatz liefern, wie ich da ran gehn kann.
Danke Gruß Pascal
-
Das schreit förmlich nach einer Rekursion wie bei den Hanoischen Türmen.
Die rekursive Funktion hat bei mir drei Parameter: Den Zeichenvorrat als Liste, eine Liste mit den einzelnen Zeichenketten, und die Position, ab der Zeichen aus dem Zeichenvorrat eingefügt werden sollen.
Interessanter dürfte allerdings die Funktion abhängig von der Anzahl Zeichen im Vorrat und den zu besetzenden Stellen sein, die direkt die Anzahl liefert.
Hat da jemand eine offene oder geschlossene? Bin ordentlich aus der Übung...
Gebe auch zu, dass ich nach ner halben Stunde abgebrochen habe
-
29.10.09 21:14 #3
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.885
- Blog-Einträge
- 29
Hallo,
gib doch bitte mal noch ein weiteres Beispiel an:
4 Buchstaben auf 3 Felder.
Wenn ich dich richtig verstanden habe, lässt sich dein Problem auch folgendermaßen darstellen:
Aus:
wird:ABC | _ | _
AB | C | _
A | BC | _
A | B | C
Code :1 2 3 4
3 0 0 2 1 0 1 2 0 1 1 1
Die Zahlen geben die jeweiligen Feldkapazitäten an. In jeder Zeile ist die Kapazität k gleich (in diesem Fall also 3).
Wenn du nun im ersten Schritt diese Kapazitätspläne generieren würdest,
könntest du in einem zweiten Schritt mit einem kleinen "Fenster" (sliding window) der Länge k über das Alphabet laufen und die darin enthaltenen Buchstaben je nach Kapazitäten auf die Felder verteilen.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Der Lösungsansatz ist gut.
Ich nehme allerdings an, dass vorne auch Leerstellen sein dürfen, so dass _ AB C z.B. auch eine gültige Lösung darstellen.
Es reicht übrigens aus, alle Feldkapazitäten herzuleiten, denn zwischen der Feldkapazität und den Zeichen, die dann darin liegen, besteht eine 1:1 Beziehung. (Mathesprech: Isomorphie).
Dazu einfach von links nach rechts einen Kapazitätsplan durchgehen und die (geordneten) Zeichen dann reinschieben. Das geht auf genau einem Weg.
Für die Funktion ergibt sich dann folgendes:
(mit n Anzahl der Stellen, auf die verteilt werden kann und k Anzahl der Zeichen im Vorrat)
1) Zuerst kann man sich entscheiden, auf wieviele Stellen man die k Zeichen legen kann. Das rangiert von i=1 bis n.
2) Diese i Stellen können nun irgendwie auf den n möglichen Stellen liegen. Das ist dann ein Faktor innerhalb der Funktion.
3) Die k Zeichen können nun auf den i Stellen verteilt werden. Einzige Einschränkung ist, dass die Summe auf den Stellen jeweils k ergibt.
So und das Ganze jetzt bitte schön in Mathesprech einpacken
Dürfte für die Fein-Kombinatoriker ein Klacks sein, ich hab das damals gehasst wie die Pest.
-
Du solltest am besten nicht in Feldern und Zeichen denken, sondern in Alphabet und Separatoren (Feldtrennern).
Beispiel:
Du hast ein Alphabet 'ABCDEFGHI'
und mußt 4 Felder füllen, was gleichbedeutend ist mit der Aufgabe, innerhalb des Alphabets 3 Feldtrenner zu platzieren. Da du 9 Buchstaben hast, hast du 8 mögliche Positionen zwischen den Buchstaben, eine vor allen Buchstaben und eine hinter allen Buchstaben, also insgesamt 10; diese kannst du von 0 bis 9 durchnummerieren.
Nun brauchst du nur noch durchzuzählen:
0 0 0
0 0 1
0 0 2
...
0 0 9
0 1 1 (nur wenn auch zwischendrin leere Felder erlaubt sind!)
0 1 2
0 1 3
etc.
du musst nur darauf achten, dass eine Positionsnummer nicht kleiner sein darf als eine vorhergehende.
Viel ErfolgGeändert von Vereth (13.11.09 um 16:41 Uhr)
Ähnliche Themen
-
Hilfe bei einem Algorithmus
Von zunamy im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 18Letzter Beitrag: 03.06.10, 13:11 -
Ähnlich einfärben
Von Dark_Fighter im Forum PhotoshopAntworten: 6Letzter Beitrag: 20.08.04, 17:34 -
Dropdwonmenüs...oda so ähnlich
Von Tear im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 18.03.04, 17:35 -
if ( ähnlich)
Von melmager im Forum PHPAntworten: 12Letzter Beitrag: 21.08.02, 18:50 -
wie ähnlich....?
Von ttrenz im Forum Flash PlattformAntworten: 4Letzter Beitrag: 14.07.01, 22:49





Zitieren

Login





