-
Notifications
You must be signed in to change notification settings - Fork 0
/
Tower Of Hanoi.c
46 lines (46 loc) · 1.15 KB
/
Tower Of Hanoi.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include<stdio.h>
int count=0;
void move(int,char,char);
void disk(int,char,char,char);
int main(void)
{
int n;
printf("\n-----------------------------------------------------------\n");
printf("\n\t\tWELCOME TO TOWER OF HANOI\n");
printf("\n-----------------------------------------------------------\n");
printf("\n\tS\t\tA\t\tD\n");
printf("\nEnter The Number of Disks : ");
scanf("%d",&n);
if(n>0)
disk(n,'S','A','D');
else
{
printf("\n\tINVALID INPUT\nThe Number of Disks ");
return 1;
}
printf("\n\n-----------------------------------------------------------\n");
printf("\n\t\tTOTAL NO. OF STEPS : %d\n",count); // 2^n - 1
printf("\n-----------------------------------------------------------\n");
printf("\n\t\t------ THANK YOU -----\n");
printf("\n\t\t\t\t\tBY :- AMAN GUPTA\n");
printf("\n-----------------------------------------------------------\n");
return 0;
}
void disk(int n,char S,char M,char E) // T.C. = O(2^n) S.C. = O(n)
{
if(n==1)
{
move(1,S,E);
return;
}
disk(n-1,S,E,M);
move(n,S,E);
disk(n-1,M,S,E);
return;
}
void move(int N,char S,char E)
{
printf("\nmove %d from %c to %c",N,S,E);
count++;
return;
}