Algoritmo de Permutaciones
Publicado por Raul (1 intervención) el 06/12/2007 16:03:51
Buenas, me gustaría hacer una algoritmo que, dados unos strings almacenados en arrays según su tamaño, me hiciese todas las permutaciones possibles. El objetivo es comprobar si una permutación determinada cumple una condición sin pasarse de un tamaño N, y si es así apartarlo.
Por ejemplo, si tengo 1 string de tamaño 2, 3 strings de tamaño 3, y uno de tamaño 4, las permutaciones posibles para N=9 serían:
2-3-4
3-3-3
La idea intuitiva es:
for (int i=0; i<NumerodeArrays cuyos Strings son menors que N; i++){
arr = arrayConStringsDeTamaño(i);
for (int j=0; j<NumerodeStrings; j++){
s= arr[j];
for (int k=i; k<NumerodeArrays; k++){
arr2=arrayConStringsDeTamaño(k);
for (int l=i; l<NumerodeArrays; l++){
s2=arr2[l];;
si (s2 cumple condicion){
s= concatenar s2 con s
}
}
}
}
}
Como podreis observar, esto funciona razonablemente hasta que N es 15 o por ahí.
Si alguien se le ocurre algo más eficiente le estaría eternamente agradecido.
Por ejemplo, si tengo 1 string de tamaño 2, 3 strings de tamaño 3, y uno de tamaño 4, las permutaciones posibles para N=9 serían:
2-3-4
3-3-3
La idea intuitiva es:
for (int i=0; i<NumerodeArrays cuyos Strings son menors que N; i++){
arr = arrayConStringsDeTamaño(i);
for (int j=0; j<NumerodeStrings; j++){
s= arr[j];
for (int k=i; k<NumerodeArrays; k++){
arr2=arrayConStringsDeTamaño(k);
for (int l=i; l<NumerodeArrays; l++){
s2=arr2[l];;
si (s2 cumple condicion){
s= concatenar s2 con s
}
}
}
}
}
Como podreis observar, esto funciona razonablemente hasta que N es 15 o por ahí.
Si alguien se le ocurre algo más eficiente le estaría eternamente agradecido.
Valora esta pregunta


0