Listen Sie alle Kombinationen mit Ersetzung (oder Kombinationen mit Wiederholung) der Größe k aus einer Menge von n Elementen auf.
Eine Kombination mit Ersetzung ist ein ungeordnetes Multiset, bei dem sich jedes Element auch in der Menge von n Elementen befindet. Beachten Sie, dass:
- Es ist ungeordnet. Ein zuvor gedrucktes Set mit einer anderen Reihenfolge sollte daher nicht erneut gedruckt werden.
- Es ist ein Multiset. Das gleiche Element kann (muss aber nicht) mehrmals vorkommen. Dies ist der einzige Unterschied zwischen einer Kombination mit Ersatz und einer normalen Kombination.
- Die Menge sollte genau k Elemente haben.
Alternativ ist es auch eine Teilmenge der Größe k des Multisets, die jedes der n Elemente k- mal enthält.
Die Eingabe sollte entweder n und k sein , wobei die Elemente die ersten n positiven oder nicht negativen ganzen Zahlen sind, oder die n Elemente und k , wobei Sie annehmen können, dass sich die n Elemente alle voneinander unterscheiden.
Die Ausgabe sollte eine Liste aller Kombinationen mit Ersetzung durch Größe k aus dem angegebenen Satz sein. Sie können sie und die Elemente in jeder von ihnen in beliebiger Reihenfolge drucken.
Sie dürfen keine eingebauten Kombinationen mit Ersatz verwenden. Sie können jedoch integrierte Funktionen verwenden, um normale Kombinationen, Permutationen, Tupel usw. zu generieren.
Dies ist Code-Golf, kürzester Code gewinnt.
Beispiel
Input: 4 2
Output: [0 0] [0 1] [0 2] [0 3] [1 1] [1 2] [1 3] [2 2] [2 3] [3 3]