Java - Como permutar un array?

 
Vista:

Como permutar un array?

Publicado por Daniel (7 intervenciones) el 06/12/2007 20:17:59
Hola.

Me gustaría hacer una algoritmo de backtracking que me permutase una serie de Strings.
El objetivo es meter los strings en una frase sin pasarse de una determinada longitud N y con las mismas letras que una frase de entrada F.

Os pongo el codigo que he hecho y no funciona. Os aviso que la recursividad no es lo mio, así que no seais muy crueles ;)

Frase fraseSolucion;
ArrayList<Frase> soluciones;
ArrayList<String> palabras;

public void resolverFrase(Frase F){
int k=0;
fraseSolucion = new Frase();
soluciones = new ArrayList<Frase>();
backtrack(F,k);

}

public void backtrack(Frase F, int k){
String auxiliar;
String auxiliar2;
String Auxiliar3;

if (k>=palabras.size()){
return;
} else{
if (F.consultarLongitudFrase() == fraseSolucion.consultarLongitudFrase()){
soluciones.add(fraseSolucion);
fraseSolucion = new Frase();
}//if
k++;
for (int i=0; i<palabras.size(); i++){
auxiliar = (String) palabras.get(i);
if (auxiliar + F = subconjuntoDeLetrasDe(F)){
fraseSolucion.añadirPalabra(auxiliar);
}//if
backtrack(F,k);

}//for
}//else
}//backtrack

Con este codigo, si le meto la frase Tea Tee (que son palabras, aunque no lo parezca), obtengo que el conjunto de strings a permutar es (eta, tea, tee, tate, teta), pero como frasesSolucion obtengo repetida varias veces: Eta Tee.

Si alguien fuese capaz de corregirme el codigo, o proporneme una alternativa no iterativa (es que ya la tengo hecha pero es tremendamente ineficiente) se lo agredería mucho.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder