Forum: Sonstige Fragen zu Delphi
Delphi
by Khabarakh,
16. Mär 2010
Danke.
Nö. Der Fehler in deinem Code ist die Variable jobs, die es in meinem überhaupt nicht gibt. /edit: Sind noch ein paar Abschreibfehler drin
Ich verstehe deinen Code zwar nicht (was bei der Namensgebung kein großes Wunder ist - wcCount finde ich allerdings gut ;) ), aber das Prinzip kenne ich doch irgendwoher :gruebel: .
...
Naja, wenigstens läufts ;) .
Forum: Sonstige Fragen zu Delphi
Delphi
by Khabarakh,
13. Mär 2010
Ääh, doch? Wenn ich meinen Algorithmus weiterlaufen lasse, ist das Ergebnis
a b c d
a b d c
b a c d
b a d c
Das ist doch wohl eine Lösung für dein Problem, oder etwa nicht?
Forum: Sonstige Fragen zu Delphi
Delphi
by Khabarakh,
12. Mär 2010
Das dürfte rekursiv leichter zu lösen sein:
function Kombis(kz, sz, i : Integer) : Integer
if i = ol.Length then
Exit(1)
nPerms := ol.Permutationen.Length
for j = 0 to nPerms - 1 do
nUnterkombis := Kombis(kz+j, sz + nPerms, i + 1)
for kz' = kz + j to kz + nUnterkombis - 1 do
Kopiere permutation nach
Forum: Sonstige Fragen zu Delphi
Delphi
by Khabarakh,
9. Mär 2010
Wir kennen deine Funktion subListsContain nicht, aber ich kann dir auch so sagen, dass du zu kompliziert denkst und vor allem quadratische Laufzeit fabriziert, hast, wo auch O(n) möglich wäre.
// arr : TList<TJob>
ol := TList<TPrioList>.Create;
for Job in arr do
prioList := bestehende TPrioList aus ol mit Prio = arr.Prio oder TPrioList.Create;
prioList.Add(Job);
Das ist der ganze...
Forum: Sonstige Fragen zu Delphi
Delphi
by Khabarakh,
8. Mär 2010
Ich habe gedacht, du hättest das Problem in Java bereits gelöst :?: Dann solltest du es doch 1:1 übernehmen können, wahrscheinlich mit einer TList<TList<TJob>>.
PS: Zur Versicherung, dass ich das Problem überhaupt richtig verstehe - aus einer Liste wie
(A,3);(B,3);(C,2);(D,1);(E,1) // jeweils (ID,Prio)
willst du die Kombinationen
ABCDE
BACDE
ABCED
BACED
haben?
Forum: Sonstige Fragen zu Delphi
Delphi
by Khabarakh,
3. Mär 2010
Na dann solltest du doch über T(Object)List<T> schnell zum Ziel kommen :) .
Forum: Sonstige Fragen zu Delphi
Delphi
by Khabarakh,
1. Mär 2010
Funktionen, um gesamte Listen zu permutieren, sollten sich zur Genüge finden lassen, also würde ich erst einmal Jobs mit gleicher Priorität zusammenfassen. Danach setzt du die einzelnen Permutationen wieder zu den ganzen Listen zusammen.