Comment calculer la complexité temporelle du programme C ?

1 Réponses


  • #include<bits/stdc++.h> en
    utilisant l'espace de noms std ;
    #define MAX_CHARS 160

    // Cette fonction renvoie true si str1 et str2 sont ismorphes
    bool areIsomorphic(string str1, string str2)
    {

      int m = str1.length(), n = str2.length();

      // La longueur des deux chaînes doit être la même pour une
      // correspondance
      if (m != n)
      return false;

      // Pour marquer les caractères visités dans str2
      bool marqué[MAX_CHARS] = {false};

      // Pour stocker le mappage de chaque caractère de str1 à
      // celui de str2. Initialisez toutes les entrées de la carte comme -1.
      carte int[MAX_CHARS];
      memset(carte, -1, taillede(carte));

      // Traiter tous les caractères un par un
      pour (int i = 0; i < n; i++)
      {
        // Si le caractère actuel de str1 est vu en premier
        // fois dedans.
        if (map[str1[i]] == -1)
        {
          // Si le caractère actuel de str2 est déjà
          // vu, le mappage un à un n'est pas possible
          if (marked[str2[i]] == true)
            return false;

          // Marquer le caractère actuel de str2 comme visité
          marqué[str2[i]] = true;

          // Stockage du mappage des caractères actuels
          map[str1[i]] = str2[i];
        }

        // S'il ne s'agit pas de la première apparition du
        // caractère actuel dans str1, alors vérifiez si
        // l'apparence précédente correspond au même caractère de str2
        else if (map[str1[i]] != str2[i])
          return false;
      }

      renvoie vrai ;
    }

    // Programme pilote
    int main()
    {
    cout << areIsomorphic("bbb", "yyy") << endl;
    cout << areIsomorphic("aab", "yyz") << endl;
    renvoie 0 ;
    }

Ecrivez votre réponse

Votre réponse apparaîtra après modération