/** * algorithme récursif de résolution des tours de Hanoi * * @author olivier */ import java.util.*; public class hanoi_recursive { static int coup = 0; public static void main(String[] args) { Scanner Entree = new Scanner(System.in); System.out.printf("Entrez le nombre de disques : "); int nbDisques = Entree.nextInt(); Entree.close(); System.out.printf("\n coup déplacement\n"); System.out.printf("---------------------\n"); long startTime = System.currentTimeMillis(); deplacer(nbDisques, 1, 3, 2); long endTime = System.currentTimeMillis(); System.out.println("Temps d\'exécution en millisecondes :" + (endTime - startTime)); } /** * procédure récursive des tours de Hanoi * @param nb_disques * @param depart * @param arrivee * @param intermediaire */ static void deplacer(int nb_disques, int depart, int arrivee, int intermediaire) { if (nb_disques == 1) // déplacement d'un seul disque System.out.printf("%4d %d -> %d\n", ++coup, depart, arrivee); else // déplacement d'une pile de disques { deplacer(nb_disques - 1, depart, intermediaire, arrivee); deplacer(1, depart, arrivee, intermediaire); deplacer(nb_disques - 1, intermediaire, arrivee, depart); } } }
vendredi 4 novembre 2011
Voici un petit exemple d'implémentation de l'algorithme des tours de Hanoi en Java.
Si j'ai un peu de temps, je vous écrit le même algo en Groovy et en PHP, mes deux langages préférés (enfin, surtout ceux que je connais à peu près...). Si quelqu'un veut m'envoyer sa version dans son langage préféré. On pourrait même faire un petit benchmark ensuite.
Inscription à :
Publier les commentaires (Atom)
Aucun commentaire:
Enregistrer un commentaire