begin process at 2008 07 06 02:20:37
1 205 433 membres
14 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TOUR_HANOI


Information sur la source

Catégorie :Astuces Niveau : Débutant Date de création : 08/07/2003 Date de mise à jour : 08/07/2003 05:45:01 Vu : 3 040

Note :
Aucune note

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

Description

simple code for un probleme encien tour de Hanoi, je pense que tout le monde connait l'ennoce de probleme, brave ce code marche sue Linux ou une plateforme windows.

Source

  • #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
  }

 }

Sources du même auteur

  • signaler à un administrateur
    Commentaire de AmK le 08/07/2003 11:12:54

    tiens essaye de le faire iterativement :)

  • signaler à un administrateur
    Commentaire de eagleye le 26/09/2006 13:48:51

    j'ai pas compris ca:
    printf ("Enter the intial tag, medium tag, last tag respectively\n");
      scanf ("%d%d%d", &A, &B, &C);
    pourquoi les tiges sont saisis en tant qu'entiers?

Ajouter un commentaire

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Boutique

Boutique de goodies CodeS-SourceS