Permutaciones con n elementos
Publicado por Ruben.c.r (1 intervención) el 19/01/2014 21:52:25
Hola a todos, tengo un problema con un algoritmo en c++. se trata de un programa que intenta encontrar el orden más optimo de un conjunto n de elementos que sólo pueden estar en dos estados, 0 y 1. El numero de elementos lo introduce el usuario y el numero de elementos en el estado 0 también. Partiendo de ahi quiero encontrar la permutación idonea ya que la posición de los elementos de la permutación van multiplicado por unos escalares distintos.
Si es un poco confuso pondré un ejemplo:
Tengo un conjunto de n elementos con valor 0 o 1: (0, 1,1,1,0,0,1..... n)
La posicion 1 tiene el elemento 1 con el estado 0. y a esta posicion le corresponde un escalar.
-Si el estado del elemento es 1, entonces lo multiplica por un 2 una cantidad inicial. Ejemplo: (1,1,1); cantidad inicial =3; 3*2= 6; 6*2= 12; 12*2=24;
-Si el estado del elemento es 0, entonces le resta 1.Ejemplo:(0,1,0);cantidad inicial=3; 3-1=2;2*2=4;4-1=3;
(1,0,0); cantidad inicial=3; 3*2=6;6-1=5;5-1=4;
El problema principal está en las permutaciones, que no sé como es el algoritmo si la dimensión es variable. la función que compara los resultados finales entre las posibles combinaciones ya sé hacerla.
Había pensado en crear un vector que contenga en cada elemento de este vector una estructura con n campos y para lo que necesito n esta comprendido entre 3 y 20. Pero no sé como puede el ordenador rellenar cada elemento del vector siendo distinto del resto.
Si no se comprende del todo, no dudeis en escribirme y os lo cuento mejor. Gracias.
Si es un poco confuso pondré un ejemplo:
Tengo un conjunto de n elementos con valor 0 o 1: (0, 1,1,1,0,0,1..... n)
La posicion 1 tiene el elemento 1 con el estado 0. y a esta posicion le corresponde un escalar.
-Si el estado del elemento es 1, entonces lo multiplica por un 2 una cantidad inicial. Ejemplo: (1,1,1); cantidad inicial =3; 3*2= 6; 6*2= 12; 12*2=24;
-Si el estado del elemento es 0, entonces le resta 1.Ejemplo:(0,1,0);cantidad inicial=3; 3-1=2;2*2=4;4-1=3;
(1,0,0); cantidad inicial=3; 3*2=6;6-1=5;5-1=4;
El problema principal está en las permutaciones, que no sé como es el algoritmo si la dimensión es variable. la función que compara los resultados finales entre las posibles combinaciones ya sé hacerla.
Había pensado en crear un vector que contenga en cada elemento de este vector una estructura con n campos y para lo que necesito n esta comprendido entre 3 y 20. Pero no sé como puede el ordenador rellenar cada elemento del vector siendo distinto del resto.
Si no se comprende del todo, no dudeis en escribirme y os lo cuento mejor. Gracias.
Valora esta pregunta


0