Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Algorithmusproblem
tartare - Sa 03.02.07 14:14
Titel: Algorithmusproblem
Hallo,
Ich programmiere gerade ein Programm, welches Kreuzungsschemen für Vererbung berechnen soll.
Jedenfalls habe ich dafür ein array[2][merkmalsanzahl bis zu 9] meiner selbsterstellten Klasse "Wert".
Nun will ich alle Möglichkeiten in ein anderes array[anzahl aller möglichkeiten = 2^merkmalsanzahl][merkmalsanzahl] eintragen. (das hochzeichen funktioniert nicht sondern Math.Pow(basis, exponent)
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| Beispiel: merkmalsazahl = 4 0 1 2 3 0 A B C D 1 E F G H möglichkeiten = 2^4 = 16 0 1 2 3 0 A B C D <- ein buchstabe ist ein "Wert" 1 A F C D 2 A B G D 3 A B C H . 14 E B C H 15 E F G D |
Also entweder ein element aus dem 1. oder dem 2. array der selben position muss in das neue array.
ich habe nur leider keine ahnung wie ich das in einer schleifer oder anderweitig umsetzen kann. Vielleicht hat ja jemand eine Idee.
Danke im Vorraus
mfg tartare
Tilo - Sa 03.02.07 14:23
Rekrusion bietet sioch hier an.
Das Schema ist auch einem Kilometerstandsanzeiger ähnlich, der hat aber je Stelle 10 Möglichkeiten, du nur zwei.
Delete - Sa 03.02.07 14:25
wie wärs so...
Delphi-Quelltext
1: 2: 3:
| for i := low(a) to high(a) do for j := low(b) to high(b) do c[i,j] = a[i]*b[j]; |
tartare - Sa 03.02.07 21:35
Gibt es noch ein anderes Beispiel zur Rekursion, weil dieses versteh ich nicht.
tartare - Do 08.02.07 16:50
Ok ich hab das Problem jetzt so gelöst:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| Maxanzahl = Convert.ToInt32(Math.Pow(2, merkmalsanzahl)); for (int j = 0; j < merkmalsanzahl; j++) for (int i = 0; i < 2; i++) { for (int k = i * (Maxanzahl / Convert.ToInt32(Math.Pow(2, j + 1))); k < Maxanzahl; k++) { gv.FMoeglichkeit[k][j] = Frau.wert[i][j]; gv.MMoeglichkeit[k][j] = Mann.wert[i][j]; o ++; if (o == Maxanzahl / Convert.ToInt32(Math.Pow(2, j + 1))) { k += Maxanzahl / Convert.ToInt32(Math.Pow(2, j + 1)); o = 0; } } } |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!