• Domingo 19 de Mayo de 2024, 12:00

Autor Tema:  Combinacion de un arreglo  (Leído 1006 veces)

Minamimoto

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Combinacion de un arreglo
« en: Lunes 30 de Noviembre de 2009, 04:24 »
0
He pasado toda la tarde intentado hacer un algoritmo que dado un arreglo cualquiera, por ejemplo

[0 1 1 1 0]  calcule todos los arreglos que se pueden hacer con la combinacion del numero 1 asi:

[0 0 0 0 0]
[0 1 0 0 0]
[0 0 1 0 0]
[0 0 0 1 0]
[0 1 1 0 0]
[0 1 0 1 0]
[0 0 1 1 0]
[0 1 1 1 0]

El numero total de arreglos tendría que ser 2^n, en donde n es e numero total de unos en el arreglo original (3)

Existe un algoritmo que haga esto?

Editado para exponer mejor el problema
« última modificación: Lunes 30 de Noviembre de 2009, 05:26 por Minamimoto »

Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: Combinacion de un arreglo
« Respuesta #1 en: Lunes 30 de Noviembre de 2009, 05:13 »
0
buenas

fijate en eso, no se que tan eficiente sera, pero anda..
seguro si buscas por ahi encontras algo mejor

Código: C++
  1.  
  2.    int mat[5] = {0,1,1,1,0};
  3.    
  4.    for(int a = 0; a <= mat[0]; a++)
  5.       for(int b = 0; b <= mat[1]; b++)
  6.          for(int c = 0; c <= mat[2]; c++)
  7.             for(int d = 0; d <= mat[3]; d++)
  8.                for(int e = 0; e <= mat[4]; e++)
  9.                {
  10.                   if(a && mat[a])
  11.                      cout << 1;
  12.                   else
  13.                      cout << 0;
  14.                   if(b && mat[b])
  15.                      cout << 1;
  16.                   else
  17.                      cout << 0;  
  18.                   if(c && mat[c])
  19.                      cout << 1;
  20.                   else
  21.                      cout << 0;
  22.                   if(d && mat[d])
  23.                      cout << 1;
  24.                   else
  25.                      cout << 0;
  26.                   if(e && mat[e])
  27.                      cout << 1;
  28.                   else
  29.                      cout << 0;
  30.                   cout << endl;
  31.                };  
  32.  
  33.  
The sweet smell of a great sorrow lies over the land.


Minamimoto

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Combinacion de un arreglo
« Respuesta #2 en: Lunes 30 de Noviembre de 2009, 05:21 »
0
Gracias por tu respuesta, pero quiza no me explique bien, el algortimo tendria que trabajar para cualquier arreglo, si importar la longitud, estaba investigando y se supone que es un algortimos de variacion, pero no he podido solucionar el problema