- #include <stdio.h>
- #include <stdlib.h>
- void hanoi(int, int, int, int);
- long int c=0; // cpt pour le nomber de movement.
-
- int main()
- {
- int nd, A, B, C;
- printf ("Enter the number of disks you wonna move: ");
- scanf ("%d", &nd);
- if ( nd == 0 )
- printf (" no hanoi for 0 disk");
- printf ("Enter the intial tag, medium tag, last tag respectively\n");
- scanf ("%d%d%d", &A, &B, &C);
- hanoi (A,B,C,nd);
- printf ("\n%ld\n", c);
-
- return 0;
- }
-
- void hanoi (int x, int y, int z, int n)
- {
-
- if ( n == 1 )// cas trivial
- {
- printf (" %d -> %d\n", x, z);
- c++;
- }
- else
- {
- hanoi(x,z,y,n-1);// movement des (n-1) disk de de x vers y z intermediare
- hanoi(x,y,z, 1 );// movement de dernier disk de x vers z y intermediare
- hanoi(y,x,z,n-1);// movement de (n-1)disk de y vers z x intermediare
- }
-
- }
#include <stdio.h>
#include <stdlib.h>
void hanoi(int, int, int, int);
long int c=0; // cpt pour le nomber de movement.
int main()
{
int nd, A, B, C;
printf ("Enter the number of disks you wonna move: ");
scanf ("%d", &nd);
if ( nd == 0 )
printf (" no hanoi for 0 disk");
printf ("Enter the intial tag, medium tag, last tag respectively\n");
scanf ("%d%d%d", &A, &B, &C);
hanoi (A,B,C,nd);
printf ("\n%ld\n", c);
return 0;
}
void hanoi (int x, int y, int z, int n)
{
if ( n == 1 )// cas trivial
{
printf (" %d -> %d\n", x, z);
c++;
}
else
{
hanoi(x,z,y,n-1);// movement des (n-1) disk de de x vers y z intermediare
hanoi(x,y,z, 1 );// movement de dernier disk de x vers z y intermediare
hanoi(y,x,z,n-1);// movement de (n-1)disk de y vers z x intermediare
}
}