Algoritmo de Permutaciones

Aca LINK un usuario pidio lo siguiente:

[AYUDA]Para hacer un programa en c++
 
Hola a todos, veran, tengo que hacer un programa que haga permutaciones
dado un numero , es decir, si ingreso el numero 3 me tendria que mostrar algo como esto:
123
132
213
231
312
321
y asi con cualquier numero que le introdusca.
alguna idea de como hacer ese programa sin funciones complicadas?
espero me ayuden.grasias de antemano

entonces agarre y en un par de minutos pude lograrlo.
Dandome como resultado este codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// Ramón Berrutti ( http://www.ramonberrutti.com )
// main.cpp
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
 
void element_swap( char *buffer, size_t a, size_t b );
 
int main( int argc, char *argv[] )
{
	char *buffer;
 
	if( argc < 2 )
	{
		printf("Uso:\n%s <numero>\n", argv[0] );
		return 0;
	}
 
	size_t len = strlen( argv[1] );
	buffer = (char*)malloc( len );
	strcpy(buffer, argv[1] );
 
	size_t opciones = 1;
	for( size_t i = 1; i <= len ; i++ )
	{
		opciones *= i;
	}
 
	printf("Mostrando las %d Opciones:\n", opciones );
	for( size_t i = 0; i < opciones ; i++ )
	{
		printf("%s\n", buffer );
		element_swap(buffer, i % (len-1), len - 1 );
	}
 
	free( buffer );
	return 0;
}
 
 
void element_swap( char *buffer, size_t a, size_t b )
{
	char temp = buffer[ a ];
	buffer[ a ] = buffer[ b ];
	buffer[ b ] = temp;
}

Cualquier inconveniente, dejen un comentario.

You can leave a response, or trackback from your own site.

Leave a Reply