1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| package hanoi;
import javax.swing.JOptionPane;
/*
- déplacer les disques du pilier de départ au pilier d'arrivée en utilisant un pilier intermédiaire
- un disque d'un certain diamètre ne peut pas être placé au dessus d'un disque de diamètre inférieur.
si on a "n" disques à déplacer :
- d'abord on déplace les premiers n-1 disques de depart vers intermediaire(en utilisant arrivée comme tour intermediaire)
- ensuite on déplace le dernier disque(le disque "n") de départ vers arrivée
- enfin on déplace les n-1 disques de intermediaire vers arrivée(en utilisant le pilier de départ comme tour intermediaire)
NB:hn=(2 exposant(n))-1(avec hn le nbre de déplacement de disques nécéssaire)
*/
public class Hanoi {
public static void hanoi(int n, String dep, String temp, String arr) {
if (n == 0) return;
hanoi(n-1, dep, arr, temp);
System.out.println("Déplacez le disque " + n + " de " + dep + " à " + arr);
hanoi(n-1, temp, dep, arr);
}
public static void main(String[] args) {
String a;
int n;
a = JOptionPane.showInputDialog("Combien de diques ?");
n = Integer.parseInt(a);
hanoi(n, "A", "B", "C"); //A,B,C les 3 piliers:A le pilier de départ,B le pilier intermediaire,C le pilier d'arrivée
}
} |
Partager