Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Permutaciones

Estas en el tema de Permutaciones en el foro de C/C++ en Foros del Web. Dados unos números del 0 al N... Imprimir por pantalla todas las permutaciones posibles. A mí se me ha ocurrido esta manera para N = ...
  #1 (permalink)  
Antiguo 31/01/2015, 07:25
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Permutaciones

Dados unos números del 0 al N... Imprimir por pantalla todas las permutaciones posibles.

A mí se me ha ocurrido esta manera para N = 3
Código C++:
Ver original
  1. N = 3;
  2. for (int i = 0;i<N;i++)
  3. {
  4.     for (int j = 0;j<N;j++)
  5.     {
  6.         if (i == j) continue;
  7.        
  8.         for (int k = 0;k<N++)
  9.         {
  10.             if (i == k || j == k) continue;
  11.            
  12.             cout<<i<<','<<j<<','<<k<<endl;
  13.         }
  14.     }
  15. }

Código:
//Es el mismo código que antes, pero sin el colorido.
N = 3;
for (int i = 0;i<N;i++)
{
    for (int j = 0;j<N;j++)
    {
        if (i == j) continue;
        
        for (int k = 0;k<N++)
        {
            if (i == k || j == k) continue;
            
            cout<<i<<','<<j<<','<<k<<endl;
        }
    }
}
Ahora, como generalizo este algoritmo para un N cualquiera?. He estado pensando pero no me sale.
  #2 (permalink)  
Antiguo 31/01/2015, 07:36
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Permutaciones

Solucionado:
Código C++:
Ver original
  1. void permutaciones(int N,int arr[],int j = 0)
  2. {
  3.     if (j == N)
  4.     {
  5.         cout<<arr[0];
  6.         for (int i = 1; i<N; i++)
  7.         {
  8.             cout<<','<<arr[i];
  9.         }
  10.         cout<<endl;
  11.     }
  12.     else
  13.     {
  14.         bool posible;
  15.         for (int i = 0;i<N;i++)
  16.         {
  17.             posible = true;
  18.             for (int k = 0;k<j;k++)
  19.             {
  20.                 if (arr[k] == i) posible = false;
  21.             }
  22.             if (posible)
  23.             {
  24.                 arr[j] = i;
  25.                 permutaciones(N,arr,j+1);
  26.             }
  27.         }
  28.     }
  29. }
  #3 (permalink)  
Antiguo 31/01/2015, 21:17
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Permutaciones

ppppsss

Existe next_permutation
  #4 (permalink)  
Antiguo 01/02/2015, 06:33
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Permutaciones

Cita:
Iniciado por razpeitia Ver Mensaje
ppppsss

Existe next_permutation
¡Muchas gracias! Esa función no la conocía Oo

Etiquetas: int
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:37.