Wednesday, February 18, 2015

C Program for Tower of Hanoi Problem

The Tower of Hanoi (also called the Tower of Brahma or Lucas Tower and sometimes pluralised) is a mathematical game or puzzle. It consists of three rods, and a number of disks of different sizes which can slide onto any rod. The puzzle starts with the disks in a neat stack in ascending order of size on one rod, the smallest at the top, thus making a conical shape as shown in below image.


C Program for Tower of Hanoi Problem


Also Read: Graphs: Introduction and Terminology
Also Read: C Program to Create a Binary Tree Using Recursion [Linked Representation]

The objective of the puzzle is to move the entire stack to another rod, obeying the following simple rules:
  1. Only one disk can be moved at a time.
  2. Each move consists of taking the upper disk from one of the stacks and placing it on top of another stack i.e. a disk can only be moved if it is the uppermost disk on a stack.
  3. No disk may be placed on top of a smaller disk.
With three disks, the puzzle can be solved in seven moves. The minimum number of moves required to solve a Tower of Hanoi puzzle is 2n-1, where n is the number of disks.

Animated solution of the Tower of Hanoi Puzzle for T(4,3)


Tower of Hanoi Problem Animation


C Program using recursion is given below which finds solution for Tower of Hanoi Problem

#include<stdio.h>

void TOH(int,char,char,char);

void main()
{
    int n;
    printf("How many plates?");
    scanf("%d",&n);
    TOH(n,A,B,C);
}

void TOH(int n,char x,char y,char z)
{
    if(n>0)
    {
        TOH(n-1,x,z,y);
        printf("
%c -> %c",x,y);

        TOH(n-1,z,y,x);
    }
}

Output

Source: Wikipedia

6J4XXVUMND9H

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.