1. There are 3 towers. Tower 1 has n disks, where n is a positive number. Tower 2 and 3 are empty.
2. The disks are increasingly placed in terms of size such that the smallest disk is on top and largest disk is at bottom.Input Format
3. You are required to
3.1. Print the instructions to move the disks.
3.2. from tower 1 to tower 2 using tower 3
3.3. following the rules
3.3.1 move 1 disk at a time.
3.3.2 never place a smaller disk under a larger disk.
3.3.3 you can only move a disk at the top.
Note -> The online judge can't force you to write the function recursively but that is what the spirit of question is.Write recursive and not iterative logic. The purpose of the question is to aid learning recursion and not test you.
A number n, representing number of disksOutput Format
A number n1, representing id of tower 1
A number n2, representing id of tower 2
A number n3, representing id of tower 3
n[n1 -> n2]
..
A set of instructions in above format to represent, move nth disc from n1 tower to n2 tower
Constraints 0 <= n <= 9 10 <= n1, n2, n3 <= 10^9 n1 != n2 != n3 Sample Input 3 10 11 12 Sample Output 1[10 -> 11] 2[10 -> 12] 1[11 -> 12] 3[10 -> 11] 1[12 -> 10] 2[12 -> 11] 1[10 -> 11]
Solution:
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
// write your code here
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int t1 = sc.nextInt(), t2 = sc.nextInt(), t3 = sc.nextInt();
toh(n,t1,t2,t3);
}
public static void toh(int n, int t1id, int t2id, int t3id){
if(n == 0) return;
toh(n-1,t1id,t3id,t2id);
System.out.println(n+"["+t1id+" -> "+t2id+"]");
toh(n-1,t3id,t2id,t1id);
}
}
Comments
Post a Comment