Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/08/2012, 10:33
Deses
 
Fecha de Ingreso: agosto-2012
Mensajes: 2
Antigüedad: 11 años, 9 meses
Puntos: 0
Problema de recursividad y/o backtracking

Hola, vengo a vosotros para pediros consejo.

Lo que quiero conseguir es que cuando el usuario introduzca el orden de ejecución de unas tareas, el programa intente hacerla y si no puede, pase a la siguiente.

Por ejemplo, el usuario pone por que orden quiere usar A, B y C. Pongamos que elige B, A, y C, por ese orden. Esos datos los almaceno en un HashMap (puede ser otra cosa si lo creéis más conveniente) y se los paso de la gui al programa. Si B no está, pasa a A, y si tampoco está, pasa a C, si tampoco está, no hace nada y sigue la ejecución por otra parte.

Esto podría hacerlo sin comerme mucho el coco repitiendo muchas lineas de código:

Código:
if (HashMap.get("1").equals("A")) {
    doA();
} else if (HashMap.get("1").equals("B")) {
    doB();
} else if (HashMap.get("1").equals("C")) {
    doC();
}  .......
} else if (HashMap.get("3").equals("A")) {
    doC();
} else if (HashMap.get("3").equals("B")) {
    doC();
} else if (HashMap.get("3").equals("C")) {
    doC();
Pero eso no es elegante ni eficiente. Quizás para un ejemplo con 3 opciones no está mal, pero si hay muchas más eso es inmanejable.
Por eso pregunto si hay alguna forma mejor de hacer eso. Lo del titulo de recursividad y/o backtracking, es que me creo que la solución pasa por usar eso, pero no sabría como implementarlo.

¡Muchas gracias a todos por la ayuda que me podáis ofrecer!

Última edición por Deses; 01/08/2012 a las 10:49 Razón: Typos en el código de ejemplo.