Ich habe ein allgemeines Problem, einen guten Algorithmus zu finden, um jede mögliche Zuweisung für einige Ganzzahlen in verschiedenen Reihen zu erzeugen.Finde gültige Zuweisungen von ganzen Zahlen in Arrays (Permutationen mit gegebener Reihenfolge)
Sagen wir, ich habe n Arrays und m Zahlen (ich kann mehr Arrays als Zahlen haben, mehr Zahlen als Arrays oder so viele Arrays wie Zahlen).
Als Beispiel habe ich die Zahlen 1,2,3 und drei Arrays:
{} {} {}
Jetzt würde ich jede dieser Lösungen finden wie:
{1,2,3}, { }, { }
{ }, {1,2,3}, { }
{ }, { }, {1,2,3}
{1,2}, {3}, { }
{1,2}, { }, {3}
{ }, {1,2}, {3}
{1}, {2,3}, { }
{1}, { }, {2,3}
{ }, {1}, {2,3}
{1}, {2}, {3}
Also grundsätzlich möchte ich jede mögliche Kombination finden, um die Nummern den verschiedenen Arrays unter Beibehaltung der Reihenfolge zuzuweisen. Also wie im Beispiel muss die 1 immer vor die anderen kommen und so weiter ...
Ich möchte einen Algorithmus in C++/Qt schreiben, um alle diese gültigen Kombinationen zu finden.
Hat jemand einen Ansatz für mich, wie mit diesem Problem umzugehen? Wie würde ich diese Permutationen erzeugen?
ADDITIONS
Leider habe ich nicht gelingt, die großen Beispiele ändern Sie für das Problem habe ich jetzt habe, da die Zahlen, die ich in den Arrays anordnen möchten in einem Array gespeichert sind (oder für mir ein QVector)
Kann jemand mir helfen, den Algorithmus zu ändern, damit er mir jede mögliche gültige Kombination der Zahlen im QVector zum QVector gibt < QVector> damit ich weitere Berechnungen auf jedem machen kann?
QVector<int> line; // contains the numbers: like {7,3,6,2,1}
QVector< QVector<int> > buckets; // empty buckets for the numbers { {}, {}, {} }
QList< QVector< QVector<int> > > result; // List of all possible results
Wäre echt toll, wenn mir jemand mit einer einfachen Implementierung zur Verfügung stellen könnte, die auf Arbeiten oder Tipps, wie es zu bekommen ... Ich konnte einfach nicht den Code ändern, der bereits so vorgesehen war, dass es funktioniert ..
es gibt tatsächlich zu viele Möglichkeiten, dies kann gelöst werden .. aber ich denke, welches wäre das Beste! – Nawaz