Tower of Hanoi is a mathematical puzzle where we have three rods and n disks. 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.
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.
Code :
#include <stdio.h>
// C recursive function to solve tower of hanoi puzzle
void
towerOfHanoi(
int
n,
char
from_rod,
char
to_rod,
char
aux_rod)
{
if
(n == 1)
{
printf
(
"\n Move disk 1 from rod %c to rod %c"
, from_rod, to_rod);
return
;
}
towerOfHanoi(n-1, from_rod, aux_rod, to_rod);
printf
(
"\n Move disk %d from rod %c to rod %c"
, n, from_rod, to_rod);
towerOfHanoi(n-1, aux_rod, to_rod, from_rod);
}
int
main()
{
int
n = 4;
// Number of disks
towerOfHanoi(n, \'A\', \'C\', \'B\');
// A, B and C are names of rods
return
0;
}
Output:
Move disk 1 from rod A to rod B
Move disk 2 from rod A to rod C
Move disk 1 from rod B to rod C
Move disk 3 from rod A to rod B
Move disk 1 from rod C to rod A
Move disk 2 from rod C to rod B
Move disk 1 from rod A to rod B
Move disk 4 from rod A to rod C
Move disk 1 from rod B to rod C
Move disk 2 from rod B to rod A
Move disk 1 from rod C to rod A
Move disk 3 from rod B to rod C
Move disk 1 from rod A to rod B
Move disk 2 from rod A to rod C
Move disk 1 from rod B to rod C
No comments:
Post a Comment