Jak uzyskać kombinacje tablic 2D

Mam następującą tablicę 2D:

String[M][]

String[0]
   "1","2","3"

String[1]
   "A", "B"
   .
   .
   .
String[M-1]
   "!"

Wszystkie możliwe kombinacje powinny być przechowywane w wynikowej tablicyString[] combinations. Na przykład:

combinations[0] == {"1A....!")
combinations[1] == {"2A....!") 
combinations[2] == {"3A....!") 
combinations[3] == {"1B....!")

Zauważ, że tablice mają zmienną długość. Kolejność elementów na wyjściu Ciąg nie ma znaczenia. Nie obchodzi mnie też, czy są duplikaty.

Gdyby macierze były tej samej długości, zagnieżdżone pętle mogłyby to załatwić, ale nie są i naprawdę nie wiem, jak podejść do problemu.

questionAnswers(5)

yourAnswerToTheQuestion