Alle möglichen Kombinationen eines 2D-Arrays [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Generierung aller möglichen Kombinationen 11 Antworten

Ich möchte alle möglichen Kombinationen aus einem 2D-Array [m x n] mit Ausnahme des ersten Elements jedes Arrays generieren. Dieses Element steht für den Typ, der die restlichen Elemente kennzeichnet. Zum Beispiel, wenn ich ein Array habe

shirts[][] = 
{
  {"colour", "red", "blue", "green", "yellow"},
  {"cloth", "cotton", "poly", "silk"},
  {"type", "full", "half"}
};

Die gewünschte Ausgabe sollte Kombination aller Möglichkeiten des Hemdes sein. Für das obige Beispiel

colour red
colour blue
...
cloth silk
type full
type half
colour red cloth cotton
colour red cloth poly
...
colour yellow type half
cloth cotton type full
...
cloth silk type half
colour red cloth cotton type full
...
colour yellow cloth silk type half

Ich habe so etwas ausprobiert (habe auch Hilfe von anderen Stack Overflow genommen)Frage )

String shirts[][] = 
{
  {"colour", "red", "blue", "green", "yellow"},
  {"cloth", "cotton", "poly", "silk"},
  {"type", "full", "half"}
};

majorCombinations = new int[possibilities][shirts.length];

int currentCombination;
int offset = 1;

for (int i=0; i < shirts.length; i++)
{
    currentCombination = 0;
    while (currentCombination < possibilities)
    {
        for (int j=0; j < shirts[i].length; j++)
        {
            for (int k=0; k < offset; k++)
            {
                if (currentCombination < possibilities)
                {
                    majorCombinations[currentCombination][i] = shirts[i][j];
                    currentCombination++;
                }
            }
        }
    }
    offset *= shirts[i].length;
}

aber es gibt nur Werte von ALLEN n Kombinationen, d.h.

colour cloth type
colour cloth full
...
yellow silk half

Kleinere Kombinationen werden nicht berücksichtigt und es ist nicht einmal generisch, d. H. Für ein [m x n] -Array (n muss nicht festgelegt werden). Eine Hilfe in VBA wäre sehr dankbar. Ich bin vertraut mit C, Java und C #. Danke im Voraus :)

Bearbeiten:

Das ist anders als dasFrage hier gestellt. Dies ist kein kartesisches Produkt, bei demein Element aus jedem Array in Frage genommen werden. Die Ausgabe, die ich benötige, setzt diese Einschränkung nicht; daher die Anzahl der Kombinationen in diesem Szenario> Anzahl der Kombinationen in der verknüpften Frage. Außerdem ist die erste Spalte eine Beschreibung des Inhalts und muss den Inhalt begleiten.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage