Por desgracia, yo no podía encontrar ni desarrollar un cerrado fórmula, pero creo que hay una solución simple para este problema. Podría por favor ayudarme?
Supongamos que hay 4 grupos diferentes:
Conjunto, de los elementos: A1, A2, A3, A4
De la serie B, los elementos: a, B1, B2, B3
Conjunto C, elementos: C1, C2, C3
Conjunto D, elementos: D1
Cada uno de los elementos en un conjunto differes de los otros, de modo que A1 no es igual a A2.
Cómo muchos de los nuevos conjuntos diferentes puede ser creado a partir de los elementos que forman la 3 de la (4) conjuntos (Conjunto A, B, C y Set D) si puedo elegir sólo uno de los elementos forma un conjunto? Escoger el orden no es importante - (A1, B1, C1) y (A1, C1, B1) son los mismos. (A1, A2, B1) no está permitido, porque tanto A1 y A2 provienen de la misma Un conjunto.
Para elegir 1-1 elemento de la forma a, B, C o a, B, D, a, C, D, o, B, C, D.
Básicamente estoy interesado en una solución general.
Puede ser resuelto con un algoritmo, pero requiere de tiempo y varios bucles, especialmente cuando los conjuntos son grandes.
Aquí está mi código: (de Acuerdo a la respuesta es 69.)
int A[5] = { 1, 2, 3, 4};
int B[4] = { 5, 6, 7 };
int C[4] = { 8, 9, 10 };
int D[2] = { 11};
int *a[4] = { A, B, C, D };
int size[4] = { 4, 3, 3, 1 };
int num = 0;
for (int s1 = 0; s1 < 4; s1++)
{
for (int s2 = s1 + 1; s2 < 4; s2++)
{
for (int s3 = s2 + 1; s3 < 4; s3++)
{
//Sets are choosen.
for (int i = 0; i < size[s1]; i++)
{
for (int j = 0; j < size[s2]; j++)
{
for (int k = 0; k < size[s3]; k++)
{
num++;
cout << a[s1][i] << " " << a[s2][j] << " " << a[s3][k] << endl;
}
}
}
}
}
}
cout << "NUM: " << num;
Gracias de antemano!