Mein Ziel dieser Elemente (Jeder Buchstabe steht für einen anderen String) zu kombinieren, istWie Elemente einer Matrix zu kombinieren, ohne die gleiche Zeile mehr als einmal jedes Mal mit
A;B;F;...
X;C;D;...
P;O;K;...
...
in einem Textfeld auf jede erdenkliche Art und Weise ohne Wiederholung und ohne Elemente der gleichen Reihe zu kombinieren. Punkte stellen eine Fortsetzung dar. Also, wenn die Matrix nur
warA;B
X;C
Das Ergebnis sollte AX AC BX BC sein. Wenn es
warA;B;F
X;C;D
P;O;K
Das Ergebnis wäre AXP AXO AXK ACP ACO ACK ADP ADO ADK BXP sein ....
fand ich einen Algorithmus
private void buildAllCombinationsRecursive<TSource>(IList<TSource> i_targetList, IList<TSource> i_sourceList, int i_currentPos)
{
if (i_currentPos == i_targetList.Count)
{
string combination = "";
for (int i = 0; i < i_targetList.Count; i++)
{
combination += i_targetList[i] + " ";
}
Console.WriteLine(combination);
return;
}
for (int i = 0; i < i_sourceList.Count; i++)
{
i_targetList[i_currentPos] = i_sourceList[i];
this.buildAllCombinationsRecursive(i_targetList, i_sourceList, i_currentPos + 1);
}
}
Aber es ein ABC CBA erzeugt usw. , die ich nicht brauche.
die algorithem arbeiten können, zu tun, was Sie aufgefordert, Ihre Quellenliste senden, die auf der ersten Iteration auf die Zielliste genereted nach der Zeile gelöscht verwendet werden müssen, so dass es den gleichen Prozess tun wird nur mit die 2. Reihe diesmal. –
@DanielNetzer Kann das als Code darsellen? –