toda combinação possível de n conjuntos

Eu tenho n conjuntos. cada conjunto tem um número diferente de elementos. Eu gostaria de escrever um algoritmo que me dê todas as combinações possíveis dos conjuntos. por exemplo: Digamos que temos:

S1={1,2}, S2={A,B,C}, S3={$,%,£,!}

uma combinação deve parecer

C1={1,A,$}
C2={1,A,%}

.... e assim por diante, o número de combinações possíveis será2*3*4 = 24

Por favor me ajude a escrever este algoritmo em Java.

Muito obrigado antecipadamente

questionAnswers(3)

yourAnswerToTheQuestion