Combinaciones imposibles

david
13 de Enero del 2006
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!

Noel Solw
13 de Enero del 2006
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