Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Algoritmo En C# De Permutaciones Para N Casos

Iniciado por , 17 de Diciembre de 2005, 03:59:52 PM

« anterior - próximo »

 hola amigos.

estoy realizando una investigacion y me falta implemetar un algoritmo.
y es el algoritmo de permutaciones sin repeticion.

no busco el algoritmo ordinario, si q el algoritmo te ayude a imprimir los cambios de posiciones, pero para n cantidades.


la investigacion q estoy haciendo consiste en q la computadora genere composiciones musicales.

si estas interesado saber mas en lo q estoy desarrollado.

mi correo es: alaniez@hotmail.com o iezelias@yahoo.es

cuidense y de ante mano muchas gracias

gdl

 No sé exactamente a qué te refieres. Voy a intentar responder algo coherente.

Si tienes un algoritmo para las permutaciones ya hecho. Algo que te diga cosas como

3 7 2 6 -> 3 7 6 2, 3 2 7 6, 3 2 6 7, 3 6 2 7...

Puedes hacer lo mismo con los índices para obtener las permutaciones de las posiciones.

Primero, metes los valores que quieres permutar en una tabla.

a[0]=3
a[1]=7
a[2]=2
a[3]=6

Entonces, permutas los índices de la tabla (que son las posiciones)

0 1 2 3 -> 0 1 2 3, 0 1 3 2, 0 2 1 3, 0 2 3 1...

Y si buscas en la tabla, obtienes las permutaciones originales.  O_O  

 mira en la STL el next_permutation. principalmente se haria asi


#include<algorithm>
using namespace std;
int array[TAM];
//lo llenas
sort(array,array+TAM);
do{
//imprime o lo que quieras
}while(next_permutation(array,array+TAM));


la ordenación primera es NECESARIA. El algoritmo de next_permutation hace las permutaciones en orden lexicografico, asi que si quieres todas necesitas que este ordenador al principio






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.