torres de hani
Es un juego oriental que consta de tres columnas llamadas origen, destino y auxiliar y una serie de discos de distintos tamaños. Los discos están colocados de mayor amenor tamaño en la columna origen. El juego consiste en pasar todos los discos a la columna destino y dejarlos como estaban de mayor a menor. (el más grande en la base, el más pequeño arriba)Las reglas del juego son las siguientes:
Sólo se puede mover un disco cada vez.
Para cambiar los discos de lugar se pueden usar las tres columnas.
Nunca deberáquedar un disco grande sobre un disco pequeño.
El problema de las torres de Hanoi se puede resolver de forma muy sencilla usando la recursividad y la técnica divide y vencerás. Para ello bastacon observar que si sólo hay un disco (caso base), entonces se lleva directamente de la varilla origen a la varilla destino. Si hay que llevar n>1 (caso general) discos desdeorigen a destino entonces:
Se llevan n-1 discos de la varilla origen a la auxiliar.
Se lleva un solo disco (el que queda) de la varilla origen a la destino
Se traen los n-1 discos de la varilla auxiliar ala destino.
package Estructura;
import javax.swing.JOptionPane;
public class Hanoi {
public static void main(String[] args) {
int n;
Stringcaptura;
captura= JOptionPane.showInputDialog( " introduzca numero de discos ");
n= Integer.parseInt(captura);
Hanoi(n,1,2,3); //1:origen 2:auxiliar 3:destino
}//Método Torres de Hanoi Recursivo
public static void Hanoi(int n, int origen, int auxiliar, int destino){
if(n==1)
System.out.println("mover disco de " + origen + " a " +destino);
else{
Hanoi(n-1, origen, destino, auxiliar);
System.out.println("mover disco de "+ origen + " a " + destino);
Hanoi(n-1, auxiliar, origen, destino);
}
}
}
Regístrate para leer el documento completo.