So erhalten Sie alle Kombinationen mehrerer Listint [duplizieren]

8

Unterscheidet sich von der obigen Lösung dadurch, dass ein Listenelement nur einmal für jede Zeile angezeigt werden kann.

Dies ist für ein Buchungssystem für mein Spa. Verschiedene Mitarbeiter können verschiedene Behandlungen durchführen.

Ich habe ein List<List<int>> . Dies sind Therapeuten, die die gebuchte Behandlung durchführen können.

Jede Liste (Buchung) enthält eine Anzahl solcher Integer (das sind Therapeuten, die die Buchung vornehmen können):

%Vor%

Ich möchte alle möglichen Kombinationen sehen, wo die Nummer nur an einem Ort erscheinen kann. Für die obige Liste wären die zwei möglichen Kombinationen:

6,2,1,3 oder 3,6,1,2

Das ist für die erste Kombination:

  • Buchung 1: Therapeut 6
  • Buchung 2: Therapeut 2
  • Buchung 3: Therapeut 1
  • Buchung 4: Therapeut 3

Ich hoffe, dadurch wird die Frage ein wenig klarer.

    
ekenman 14.07.2013, 17:23
quelle

3 Antworten

2

Diese Lösung ist bei weitem nicht effizient:

%Vor%

Es hört sich so an, als ob das mit der Dynamischen Programmierung effizienter gelöst werden könnte, aber es ist schon eine Weile her, seit ich den entsprechenden Kurs belegt habe.

    
ytoledano 14.07.2013, 18:08
quelle
4

Lösen durch Rekursion:

%Vor%

Ausgabe:

%Vor%     
Fung 14.07.2013 18:14
quelle
1

Eine einfache Möglichkeit, dieses Problem zu betrachten, wäre die Auswahl aus allen Kombinationen der Werteliste, wobei jeder Wert in der Kombination eindeutig ist.

Zuerst herausfinden, was alle Kombinationen von Werten sind.

%Vor%

Dann müssen Sie herausfinden, ob alle Werte eindeutig sind. Ein einfacher Weg, das herauszufinden, wäre zu überprüfen, ob die Anzahl der verschiedenen Werte gleich der Anzahl aller Werte ist.

%Vor%

Sobald Sie alles haben, setzen Sie alles zusammen.

%Vor%     
Jeff Mercado 14.07.2013 19:07
quelle

Tags und Links