¿Cómo calcular la complejidad del tiempo del programa C?

1 Respuestas


  • #include <bits / stdc ++. h>
    usando el espacio de nombres std;
    #define MAX_CHARS 160

    // Esta función devuelve verdadero si str1 y str2 son ismorphic
    bool areIsomorphic (string str1, string str2)
    {

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

      // La longitud de ambas cadenas debe ser la misma para una correspondencia de uno a uno
      //
      if (m! = N)
      return false;

      // Para marcar los caracteres visitados en str2
      bool marcados [MAX_CHARS] = {false};

      // Para almacenar el mapeo de cada carácter desde str1 hasta
      // el de str2. Inicialice todas las entradas del mapa como -1.
      int mapa [MAX_CHARS];
      memset (mapa, -1, tamaño de (mapa));

      // Procesar todos los caracteres uno por uno
      para (int i = 0; i <n; i ++)
      {
        // Si el carácter actual de str1 se ve por primera
        vez // vez en él.
        if (map [str1 [i]] == -1)
        {
          // Si el carácter actual de str2 ya está
          // visto, el mapeo uno a uno no es posible
          if (marcado [str2 [i]] == true)
            return false;

          // Marcar el carácter actual de str2 como visitado
          marcado [str2 [i]] = true;

          // Almacenar el mapeo del mapa de caracteres actual
          [str1 [i]] = str2 [i];
        }

        // Si esta no es la primera aparición del
        carácter // actual en str1, entonces verifique si la
        apariencia anterior // se asignó al mismo carácter de str2
        else if (map [str1 [i]]! = Str2 [i])
          return false;
      }

      devuelve verdadero;
    }

    // Programa controlador
    int main ()
    {
    cout << areIsomorphic ("bbb", "yyy") << endl;
    cout << areIsomorphic ("aab", "yyz") << endl;
    return 0;
    }

Escribe tu respuesta

Tu respuesta aparecerá después de la moderación