Apostar y ganar

Click Now!

jueves, 16 de mayo de 2013

Algoritmo para permutaciones en C, C++ codigos gratis



Algoritmos para grafos isomorfos y permutación de números en C



#include<iostream>
using std::cout;
using std::cin;
using std::endl;

#include <stdio.h>
#include <string.h>
#include <stdlib.h>



void permutaciones ( int s[]  , int );
void print( int s[], int n );
void swap( int *i, int *j );
int factorial( int );


int main () {

int n , r, num_comb ;
cin>>n;
cin>>r;

int j,val_max;

int s[ 6 ] , i, m;

num_comb = factorial(n) / (factorial(n-r)*factorial(r)) ;

   for ( i = 1 ; i<=r ; i++ )
      s[i] = i;
   permutaciones( s, r );


for ( i = 2 ; i<= num_comb ; i++){
m=r;
val_max = n ;
while ( s [m] == val_max ){
// Encuentra el elemento más a la derecha
// que no tiene su valor máximo.
m= m-1;
val_max = val_max - 1 ;
}
// Se incrementa el elemento más a la derecha

s[m] = s [ m ] +1  ;
// el resto de los elementos son sucesores de X[m]
for ( j = m + 1 ; j <= r ; j++ )
s [j] = s [j-1] + 1;

permutaciones( s, r );
}
}


void permutaciones ( int s[] , int n)
{
   int i, nfact, m, k, p, q;
   // Copia el arreglo
   int x[ 6 ] ;
   for ( i=0 ; i < 6 ; i++){
    x[i] = s [i] ;
   }

nfact = factorial (n);

   print( s, n );

   for ( i = 2; i <= nfact; i++ ) {
      m = n - 1;
      while ( s[ m ] > s[ m + 1 ] )
         m--;
      k = n;
      while ( s[ m ] > s[ k ] )
         k--;
      swap( &s[ m ], &s[ k ] );
      p = m + 1;
      q = n;
      while ( p < q ) {
         swap( &s[ p ], &s[ q ] );
         p++;
         q--;
      }
      print( s, n );
   }
   for ( i=0 ; i < 6 ; i++){
    s[i] = x [i] ;
   }

}


int factorial( int n ) {
if (n==0)
return 1;
else
return n*factorial(n-1);

}



void print( int s[], int n )
{
   int i;

   for ( i = 1; i <= n; i++ )
      printf( "%d ", s[ i ] );
   putchar( '\n' );
}




void swap( int *i, int *j )
{
   int temp = *i;
   *i = *j;
   *j = temp;
}


Codigo


Como aprender a programar en c++ muy fácil solo tienes que tocar y tocar todo el codigo libre que encuentres y ver como funciona 






No hay comentarios:

Publicar un comentario