Algoritmia - Permutaciones con n elementos

 
Vista:

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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Permutaciones con n elementos

Publicado por Pico (3 intervenciones) el 29/01/2014 10:37:06
Es sencillo con un bucle circular..

La primera permutación sale de contar desde el primero al último.
La segunda, de contar desde el segundo al último y vuelta al principio hasta el segundo
La tercea, desde el tercero al último y vuelta al principio hasta el tercero.
Una vez llegado al último se hace lo mismo pero en sentido contrario.

Ejemplo:

1,2.3.4.5,..,n
2,3,4,5,...,n,1
3,4,5,...,n,1,2
......
n,...,5,4,3,2,1
...,5,4,3,2,1,n
5,4,3,2,1,n,...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar