• Viernes 15 de Noviembre de 2024, 09:44

Autor Tema:  Combinatoria  (Leído 1288 veces)

inut

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Combinatoria
« en: Lunes 26 de Marzo de 2007, 12:28 »
0
Hola a todos,

soy nueva por aqui... os explico

Necesito alguna idea de como hacer que dada un matriz de caracteres me ponga en un fichero todas las posibilidades de ordenar las columnas.

Es decir, teniendo en cuenta esta matriz:
a b c
d e f
g h i

aparezca en cada fichero:

1er fichero: adgbehcfi
2ndo fichero: adgcfibeh
3ero fichero:behadgcfi
4rto fichero:behcfiadg
5nto fichero:cfiadgbeh
6xto fichero:cfibehadg

el numero de fichero es igual al factorial del numero de columnas

yo abro los ficheros con el ofstream y luego los voy llenando, pero no se como ir haciendo que me ponga cada una de la combinaciones en ficheros distintos y calcular la combinacion que va en cada fichero.

programo en c++, a ver si me podeis echar una mano???, gracias.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Combinatoria
« Respuesta #1 en: Lunes 26 de Marzo de 2007, 22:12 »
0
Aunque no se de C++ si puede decir que es un trabajo facil y te doy una idea.

Crea un array (o hash, oops en C++ cre que es unum  :P  o struct...) donde defines la matriz:

@array = ( 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i');

Luego haces un loop:
Código: Text
  1.  
  2. string = 0;
  3. numero = 0
  4. do {
  5.   dato = array[numero].array[(numero+3)].array[(numero+6)];
  6. }
  7. until (string != 0);
  8.  
  9.  

Y asi, estas faacil!
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

inut

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Combinatoria
« Respuesta #2 en: Lunes 26 de Marzo de 2007, 22:28 »
0
no acabo de entender lo que me dices,

yo quiero hacer la transposicion de matrices es decir probar todas las combinaciones de ordenar  las columnas y cada combinacion guardarla en un fichero.

pero no entiendo pq suma 3 y 6 al numero y la operacion que haces entre array

me lo pudes explicar mejor, gracias

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Combinatoria
« Respuesta #3 en: Lunes 26 de Marzo de 2007, 22:46 »
0
Claro mira:
Citar
1er fichero: adgbehcfi
Entonces:
Código: Text
  1. a b c
  2. d e f
  3. g h i
  4.  
  5.  
Es igual a:
Código: Text
  1.  
  2. 0 1 2
  3. 3 4 5
  4. 6 7 8
  5.  
  6.  

Es una matriz de 3x3, facil en ese caso, el codigo que te puse esta muy incompleto pero la idea es entendible, a ver si te ayuda mas:

Código: Text
  1. string = 0;
  2. numero = 0
  3. do {
  4.  dato = array[numero].array[(numero+3)].array[(numero+6)];
  5.   // hacer algo con el dato...
  6.   if(array[(numero+9)] == 8){
  7.     string = 1;
  8.     last; //No se cual sea la funcion para salir de un loop en C++
  9.   }
  10.   numero += 1; // o numero++ no se, el caso es que tiene que aumentar 1 para que cumpla todo el recorrido
  11. }
  12. until (string != 0);
  13.  
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.