Se ingresa la cantidad de digitos
segun eso, se calcula el factorial para saber cuantas distintas combinaciones hay, y se crea una matriz de esas dimensiones
la matriz se inicia en 0
Se carga la primer convinacion en la matriz
mientras el primer elemento de la fila sea distinto a 0, va a ir comparando numero a numero, para ver si la combinacion es la misma
si es la misma la descarta y crea una nueva, si no es la misma acumula
si la cantidad de acumulaciones -1 es igual al indice de fila, significa que eran todas distintas, y guarda esa convinacion es esa fila
y asi hasta terminar
pero bueno, eso es lo que deberia hacer, no lo que hace
aca les tiro mi codigo:
Código
#include <iostream> #include <Time.h> #include <cstdlib> using namespace std; void CargaVector(int vec[],int digitos) { int z=0,error,N; while (vec[digitos-1] == 0) { error=1; while (error == 1) { error=0; N = (rand() % digitos) + 1; for (int a=0;a<z;a++) if (N == vec[a]) error=1; if (error == 0) vec[z]=N; } z++; } } int main() { int N,x,y,digitos,aux,fact,error,bien=1,ban; cout << "Digitos: "; cin >> digitos; aux = digitos; fact = digitos; while (aux-1 > 1) { fact = fact*(aux-1); aux--; } int mat[fact][digitos],vec[digitos]; for (x=0;x<fact;x++) for (y=0;y<digitos;y++) mat[x][y] = 0; for (x=0;x<digitos;x++) vec[x]=0; CargaVector(vec,digitos); // x=0; for (y=0;y<digitos;y++) mat[x][y] = vec[y]; CargaVector(vec,digitos); while (mat[fact-1][digitos-1] == 0) //mientras el ultimo elemento de la matriz siga siendo 0 { x=0; ---> while (mat[x][0] != 0) //mientras el primer elemento de la fila sea distinto de 0 (aca va a estar comparando, para no repetir combinaciones) { bien=0; ban=0; for (y=0;y<digitos;y++) if (mat[x][y] != vec[y] && ban == 0) { bien++; ban++; } if (bien == 0) //si bien sigue siendo 0 es porque hubo una combinacion coincidente, vuelvo a generar una combinacion en mi vector auxiliar y mando al final del ciclo { CargaVector(vec,digitos); continue; } x++; ---> } if (bien-1 == x) for (y=0;y<digitos;y++) mat[x][y] = vec[y]; } return 0; }
Al parecer nunca llega a salir del ciclo que marque con flechitas
Una ayudilla, dato, consejo?