programa Java para Torre de Hanoi

Torre de Hanoi programa en Java : Aquí, estamos implementando un programa Java para resolver la Torre de Hanoi .

Torre de Hanoi es un rompecabezas matemático donde tenemos tres barras y discos n. El objetivo del rompecabezas es mover todos los discos de varilla fuente de varilla de destino utilizando la tercera varilla (dicen auxiliar). Las reglas son:

  1. sólo un disco se puede mover a la vez.
  2. el disco A se puede mover sólo si es en la parte superior de una barra.
  3. No hay ningún disco puede ser colocado en la parte superior de un disco más pequeño.

Imprimir los pasos necesarios para mover n discos de varilla fuente de varilla de destino. Fuente de Rod es nombrado como ‘a’ , barra auxiliar como ‘b’ y la varilla de destino como ‘c’ .

Formato de entrada: entero n

Formato de salida: Pasos en diferentes líneas (en una línea de la fuente de impresión y destino nombre varilla separadas por el espacio).

Ejemplo:

    Sample Input:
2
Sample Output:
a b
a c
b c

Explicación:

Este es uno de los famosos problemas en recursión. Para solucionar esto, asumamos que las medidas adoptadas class 2 discos. Vamos a suponer que la varilla A, B y C y tenemos que cambiar los discos de A a B. En primer lugar, cambiamos el disco más pequeño a C, entonces cambiamos el disco mayor a B, y por último, poner el disco más pequeño de C a B.

Por lo tanto, for N discos, permite a los turnos de recursión N-1 discos a C, y que se desplazará el último disco de a a B y de nuevo permiten cambios de recursividad resto del disco a C. el uso de este, podremos para resolver el problema.

Algoritmo:

declarar una función recursiva towerOfHanoi con parámetros (disco for, fuente class, class auxiliar, int destino)

  • PASO 1: Base char: Si (disco = = 0) char;
  • PASO 2: Base char: Si (disco == 1) Imprimir origen al destino
  • PASO 3: recursiva Case: towerOfHanoi (disco -1, origen, destino, auxiliar)
  • PASO 4: Imprimir origen al destino
  • PASO 5: towerOfHanoi (disco -1, auxiliar, origen, destino)

Ejemplo:

    Input : 3
Disk 1 moved from A to C
Disk 2 moved from A to B
Disk 1 moved from C to B
Disk 3 moved from A to C
Disk 1 moved from B to A
Disk 2 moved from B to C
Disk 1 moved from A to C

Programa:

import java.util.Scanner;
public class Main {
//Recursive Function
public static void towerOfHanoi(int disks, char source, char auxiliary, char destination) {
// Write your code here
if(disks==0){ //Base Case 1
return;
}
if(disks==1){ //Base Case 2
System.out.println(source +" " + destination);
return;
}
else{
//Shifting d-1 disk from A to C
towerOfHanoi(disks-1,source,destination,auxiliary);
System.out.println(source + " " + destination);
//Shifting d-1 disk from c to B
towerOfHanoi(disks-1,auxiliary,source,destination);
}
}
public static void main(String[] args) {
int disk;
Scanner s = new Scanner(System.in);
System.out.print("Print No of Disks: ");
disk = s.nextInt();
towerOfHanoi(disk, 'A', 'C', 'B');
}
}

salida

Print No of Disks: 3
A B
A C
B C
A B
C A
C B
A B


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *