#include <iostream.h>
#include <stdlib.h>
void intercambiar (int *p1, int *p2)
{
int aux;
aux = *p1;
*p1 = *p2;
*p2 = aux;
}
void ordenar(int vector[], int i, int j)
{
int x,y;
for(x=i; x<j-1; x++)
for (y=x+1; y<j; y++)
if (vector[x] > vector[y])
intercambiar(&vector[x],&vector[y]);
}
int posmenor(int vector[],int i, int n, int sig)
{
int x, m=0;
for (x=n-1;x >= i ; x--)
{
if (vector[x] > sig)
{
m=x;
x=-1;
}
}
x=-1;
}
void escribir(int vector[],int n)
{
for(int i=0;i<n;i++)
cout<<vector[i]<<" ";
}
int permutar (int vector[], int i, int n)
{
int p;
if (i>0)
{
if (vector[i] > vector[i-1])
{
p=posmenor(vector, i, n, vector[i-1]);
intercambiar(&vector[p], &vector[i-1]);
ordenar(vector, i, n);
escribir(vector, n);//aqui mostramos el arreglo resultante despues de cada permutacion
return 1;
}
else
return (permutar(vector, i-1, n));
}
}
int main()
{
int *vector,n;//hay que leer el tamaño del arreglo
vector=new int(n);
while(permutar(vector,n-1,n)!=-1)
{
}
system("PAUSE");
return 0;
}