Все возможные комбинации двумерного массива [дубликаты]

This question already has an answer here:

Generating all Possible Combinations 11 answers

Я хочу сгенерировать все возможные комбинации из массива 2D [m x n], за исключением первого элемента каждого массива. Этот элемент будет обозначать «тип» обозначая остальные элементы. Например, если у меня есть массив

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

Желаемый результат должен быть комбинацией всех возможностей рубашки. Для приведенного выше примера

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

Я пробовал что-то вроде этого (также получил помощь от другого переполнения стекаВопрос )

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;
}

но он дает значения ВСЕХ n комбинаций, т.е.

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

Он не учитывает меньшие комбинации, и он даже не является общим, то есть для массива [m x n] (n не должен быть фиксированным). Помощь в VBA будет высоко ценится. Мне комфортно с C, Java и C #. Заранее спасибо :)

Edit:

Это отличается отзаданный здесь вопрос, Это не декартово произведение, в которомone элемент должен быть взят из каждого рассматриваемого массива. Требуемый вывод не накладывает этого ограничения; отсюда количество комбинаций в этом сценарии & gt; количество комбинаций в связанном вопросе. Кроме того, первый столбец является дескриптором содержимого и должен сопровождать содержимое.

Ответы на вопрос(3)

Ваш ответ на вопрос