Combinaciones imposibles
Buenas!
En verdad que soy novato novato, así que no se si quiera si sabré plantear el problema... la cosa es que necesito crear todas las variantes para cadenas de 'n' miembros, donde cada uno de los miembros puede tomar cuatro valores: 'a' 'b' 'c' 'd'. El orden en el que se encuentran es importante, esto es: 'ab' no es lo mismo que 'ba'... Help!
Muchas gracias!
En verdad que soy novato novato, así que no se si quiera si sabré plantear el problema... la cosa es que necesito crear todas las variantes para cadenas de 'n' miembros, donde cada uno de los miembros puede tomar cuatro valores: 'a' 'b' 'c' 'd'. El orden en el que se encuentran es importante, esto es: 'ab' no es lo mismo que 'ba'... Help!
Muchas gracias!
creo que lo tu quieres se llama permutaciones, fijate si este programa responde a tus necesidades
// program permute.cpp
// recursion : permutations.
// 30/10/2001
// written in Borland CPP ver 3.1
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#define MAX 4
int p[MAX],counter = 0;
void InitArray()
{
for(int i = 0; i < MAX; i++)
p[i] = -1;
} // INIT ARRAY
void ShowArray()
{
cout << setw(5) << ++counter << " :";
for(int i = 0; i < MAX; i++)
cout << setw(2) << char('a'+p[i]);
cout << endl;
} // SHOW ARRAY
void Permutation(int level)
{
if(level == MAX)
{
ShowArray();
return;
}
for(int i = 0; i < MAX; i++)
{
if(p[i] == -1)
{
p[i] = level;
Permutation(level+1);
p[i] = -1;
}
}
} // PERMUTATION
void main()
{
clrscr();
cout << "recursion : permutations" << endl << endl;
InitArray();
Permutation(0);
cout << endl << "end of program - good bye ! ! !" << endl;
getch();
} // MAIN
// program permute.cpp
// recursion : permutations.
// 30/10/2001
// written in Borland CPP ver 3.1
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#define MAX 4
int p[MAX],counter = 0;
void InitArray()
{
for(int i = 0; i < MAX; i++)
p[i] = -1;
} // INIT ARRAY
void ShowArray()
{
cout << setw(5) << ++counter << " :";
for(int i = 0; i < MAX; i++)
cout << setw(2) << char('a'+p[i]);
cout << endl;
} // SHOW ARRAY
void Permutation(int level)
{
if(level == MAX)
{
ShowArray();
return;
}
for(int i = 0; i < MAX; i++)
{
if(p[i] == -1)
{
p[i] = level;
Permutation(level+1);
p[i] = -1;
}
}
} // PERMUTATION
void main()
{
clrscr();
cout << "recursion : permutations" << endl << endl;
InitArray();
Permutation(0);
cout << endl << "end of program - good bye ! ! !" << endl;
getch();
} // MAIN