Salve a tutti,
sto cercando da giorni a venire a capo del mio problema che sembra apparentemente banale ma che, in realtà, mi sta facendo impazzire.

Ho una matrice di n array di 3 elementi dove n è variabile. Devo combinare ciascun elemento di ciascuna array con ciascun elemento degli altri array. E' un discorso un po' contorto e spero di chiarirmi con un esempio.

Supponiamo la matrice sia così fatta:

codice:
String mat[][] = {
  {"AA", "Aa", "aa"},
  {"BB", "Bb", "bb"},
  {"CC", "Cc", "cc"},
  {"DD", "Dd", "dd"}
};
in questo caso una matrice 4x3. Le combinazioni che devo tirar fuori sarebbere queste:

codice:
AA BB CC DD
AA BB CC Dd
AA BB CC dd
AA BB Cc DD
AA BB Cc Dd
...
aa bb cc Dd
aa bb cc dd
ho cercato di abbozzare diversi algoritmi che vanno dai semplici cicli annidati a funzioni ricorsive senza però arrivare ad una soluzione.
Mi potreste dare un'idea su come risolvere?
Ringraziandovi anticipatamente porgo distinti saluti.

PS.: è evidente che al crescere del numero degli array i tempi di computazione
crescono in modo esponenziale ma so a priori, per il campo di applicazione dell'algoritmo, che
saranno rarissimi i casi in cui la matrice avrà un numero di righe superiore a 3 e quindi potrei gestire il tutto con tre cicli annidati ma devo comunque gestire la matrice indipendentemente dalla dimensione.