Saltar al contenido

Contando la secuencia parcial de longitud 4 con el producto de los primeros tres elementos igual al cuarto elemento

Contando la secuencia parcial de longitud 4 con el producto de los primeros tres elementos igual al cuarto elemento

Dada una matriz arr[] que consiste en norte enteros positivos, la tarea es encontrar el número de subsecuencias de longitud 4 cuyo producto de los primeros tres elementos es igual al cuarto elemento.

Ejemplos:

Entrada: arr[] = {10, 2, 2, 7, 40, 160}
Producción: 2
Explicación:
Las siguientes son las secuencias parciales de longitud 4 que cumplen con los criterios especificados:

  1. {10, 2, 2, 40}, el producto de los primeros tres elementos es 10 * 2 * 2 = 40 (= cuarto elemento).
  2. {2, 2, 40, 160}, el producto de los primeros tres elementos es 2 * 2 * 40 = 160 (= cuarto elemento).

Por lo tanto, el número total de subsecuencias es 2.

Entrada: arr[] = {1, 1, 1, 1}
Producción: 1

Enfoque ingenuo: El enfoque más simple para resolver el problema dado es generar todas las subsecuencias posibles y contar las subsecuencias que cumplen con los criterios dados. Después de haber verificado todas las subsecuencias, imprima el número total recibido.
Complejidad del tiempo: O (2norte)
Sala auxiliar: O (1)

Enfoque eficiente: El enfoque anterior también se puede optimizar eliminando todas las subsecuencias de longitud. siendo encontrado 3 y almacene el producto de los tres en el HashMap y luego cuente la subsecuencia configurando cada elemento como el cuarto elemento y aumentando la frecuencia del producto de tripletes. Para resolver el problema dado, siga los pasos a continuación:

A continuación se muestra la implementación del enfoque anterior:

C ++

 

#include <bits/stdc++.h>

using namespace std;

 

int countQuadruples(int A[], int N)

{

    

    int ans = 0;

 

    

    

    unordered_map<int, int> freq;

 

    

    for (int i = 0; i < N; i++) {

 

        

        

        ans += freq[A[i]];

 

        

        

        for (int j = 0; j < i; j++) {

 

            for (int k = 0; k < j; k++) {

 

                

                

                freq[A[i] * A[j] * A[k]]++;

            }

        }

    }

 

    

    return ans;

}

 

int main()

{

    int arr[] = { 10, 2, 2, 7, 40, 160 };

    int N = sizeof(arr) / sizeof(arr[0]);

 

    cout << countQuadruples(arr, N);

 

    return 0;

}

Complejidad del tiempo: EN3)
Sala auxiliar: EN3)

¡Atención lectores! No dejes de aprender ahora. Obtenga todos los conceptos principales de DSA con el Curso de autoaprendizaje de DSA a un precio asequible para los estudiantes y conviértase en apto para la industria. Para completar su preparación desde el aprendizaje de un idioma hasta DS Algo y mucho más, lea Toma el curso de preparación para entrevistas.

En caso de que quieras participar Clases en vivo con expertos, consulte Cursos en vivo de DSA para profesionales y Programación de competencias en vivo para estudiantes.

Source link