Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Algorithmus für Listen-Kombinationen
[email protected]
myCSharp.de - Member



Dabei seit:
Beiträge: 407

Themenstarter:

Algorithmus für Listen-Kombinationen

beantworten | zitieren | melden

Hi!

Ich steh grad etwas auf der Leitung...

Ich hab 3 Listen (List<string>) in denen können Elemente enthalten sein.

Ich such nun nach einer Möglichkeit alle möglichen Kombinationen
zu "berechnen".

Also zb.

List 1 = {A, B, C, D, E}
List 2 = { 1, 2, 3}
List 3 = {@, ?, !}

Und rauskommen sollte dann:

A1
[email protected]
A1?
...
1A?
1B?
1C?
...

Wie geh ich hier am besten vor?
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo [email protected],
Zitat
Wie geh ich hier am besten vor?
du benutzt die Forensuche und findest fertige Lösungen (ok, vermutlich nur für den Fall mit einer Liste; die sollten sich aber leicht auf drei Listen erweitern lassen). Bitte poste die besten Treffer hier. Vielen Dank!

Mal abgesehen davon, dass wenn die Anzahl der Listen klein ist (hier sind es ja drei), du einfach (drei) geschachtelte foreach-Schleifen nehmen kannst.

herbivore
private Nachricht | Beiträge des Benutzers
Joetempes
myCSharp.de - Member

Avatar #avatar-3309.jpg


Dabei seit:
Beiträge: 914
Herkunft: Germany

beantworten | zitieren | melden

Das sollte Dir schon mal helfen:

[Snippet] Alle Kombinationen von n Elementen (rekursiv)
private Nachricht | Beiträge des Benutzers
[email protected]
myCSharp.de - Member



Dabei seit:
Beiträge: 407

Themenstarter:

beantworten | zitieren | melden

Zitat
Mal abgesehen davon, dass wenn die Anzahl der Listen klein ist (hier sind es ja drei), du einfach (drei) geschachtelte foreach-Schleifen nehmen kannst.
So hab ich dann auch gemacht...
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

du solltest eine beschränkung der maximalen größe miteinbauen.
aktuell hast du a*b*c. alles vom typ string. in meinen kurzen tests habe ich meist nach 9 millionen objektreferenzen eine outofmemory-exception bekommen. unabhängig davon auf welchem rechner ich war. auf meinem entwicklerrechner hatte cih z.b. noch 3 gb freien speicher und dennoch hab ich diese exception bekommen.

in unserem projekt existieren z.b. extrem viele objekte und es ist mit der zeit derart angewachsen, das es sich bei uns nun als großes problem darstellt.

empfehlen würde ich dir daher die oben genannte formel am anfang der emthode auszuführen und
1. die ergebnissliste damit vorzuinitialisieren. das gibt dir einen performanceboost, da die liste dann automatisch weiß wie groß sie werden soll und entsprechend speicher reservieren kann.
2. gleich eine exception oder irgendwie anders reagieren, wenn z.b. 8 millionen überschritten werden.