Número de pares en matriz con producto mayor que 0 C++

Dada una matriz Arr[] de largura septentriónla tarea es contar el número de pares (i, j) tales que Arr[i] * arr[j] > 0 y 0 ≤ yo < j ≤ septentrión† Igualmente se da que el punto del arreglo puede ser cualquier inalterable positivo, incluido el cero, o puede ser un inalterable imagen.

Ejemplos:

Aporte: Arr[] = {1, -5, 0, 2, -7}
Salida: 2
Explicación: Aquí el producto de (1, 2) y (-5, -7) es longevo que 0.

Aporte: Arr[] = {0, 1, 5, 9}
Salida: 3

Enfoque ingenuo: El enfoque sustancial es suscitar todos los pares posibles de la matriz y contar los pares que cumplen la condición dada.

Siga los pasos a continuación para implementar la idea:

  • Utilice un caracolillo anidado para suscitar todos los pares.
  • Compruebe si el producto del par es longevo que 0, luego aumente el contar
  • Devuelve el postrer recuento posteriormente de que se hayan generado todos los pares.

Siga los pasos a continuación para implementar el enfoque.

Guía de Contenido

C++

 

#include <bits/stdc++.h>

using namespace std;

 

long countPairs(int arr[], int n)

{

    long count = 0;

    for (int i = 0; i < n - 1; i++) {

        for (int j = i + 1; j < n; j++) {

 

            

            

            if (arr[i] * arr[j] > 0)

                count++;

        }

    }

 

    

    return count;

}

 

int main()

{

    int arr[] = { 1, -5, 0, 2, -7 };

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

 

    

    cout << countPairs(arr, N);

    return 0;

}

Java

 

class GFG {

 

    

    

    static long countPairs(int arr[], int n)

    {

        long cnt = 0;

        for (int i = 0; i < n - 1; i++) {

            for (int j = i + 1; j < n; j++) {

 

                

                

                if (arr[i] * arr[j] > 0)

                    cnt++;

            }

        }

 

        

        return cnt;

    }

 

    

    public static void main(String[] args)

    {

        int arr[] = { 1, -5, 0, 2, -7 };

        int N = arr.length;

 

        

        System.out.println(countPairs(arr, N));

    }

}

Python3

 

def countPairs(arr, n) :

    cnt = 0;

    for i in range(n - 1) :

        for j in range(i + 1, n) :

 

            

            

            if (arr[i] * arr[j] > 0) :

                cnt += 1;

 

    

    return cnt;

 

if __name__ == "__main__" :

    arr = [ 1, -3, 0, 2, -1 ]†

    N = len(arr);

 

    

    print(countPairs(arr, N));

Complejidad del tiempo: EN2
cuarto auxiliar: O(1)

Enfoque válido: El problema se puede resolver a partir de la futuro idea:

La multiplicación de dos números solo puede ser longevo que cero si los dos números son negativos o si los dos números son positivos. Y si un número es cero, no puede emparejarse con nadie para obtener un resultado longevo que cero.

Para implementar la idea, cuente los números positivos y los números negativos. Luego obtenga el número de pares usando la fórmula de combinatoria septentriónC2 es proponer (positivo*(positivo-1)/2 + imagen*(imagen*-1)/2 )† Siga los pasos a continuación para implementar la idea:

  • Onda desde Yo = 0 a N-1
    • Cuente el número de números positivos y negativos en la matriz (digamos representados por positivo y imagen
  • Ahora calcule el número total de pares adecuado a la ocurrencia de positivo y el número total de pares adecuado a la ocurrencia de imagen usando la observación previo.
  • Devuelve el número total de veces.

A continuación se muestra la implementación de la implementación previo:

C++

 

#include <bits/stdc++.h>

using namespace std;

 

long countPairs(int arr[], int n)

{

    int positive = 0;

    int negative = 0;

 

    

    

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

        if (arr[i] == 0)

            continue;

        else if (arr[i] > 0)

            positive++;

 

        else

            negative++;

    }

 

    

    long pos = (positive * (positive - 1)) / 2;

 

    

    long neg = (negative * (negative - 1)) / 2;

 

    

    return pos + neg;

}

 

int main()

{

    int arr[] = { 1, -5, 0, 2, -7 };

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

 

    

    cout << countPairs(arr, N);

    return 0;

}

Java

 

class GFG {

 

    

    

    static long countPairs(int arr[], int n)

    {

        int positive = 0;

        int negative = 0;

 

        

        

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

            if (arr[i] == 0)

                continue;

            else if (arr[i] > 0)

                positive++;

 

            else

                negative++;

        }

 

        

        

        long pos = (positive

                    * (positive - 1))

                   / 2;

 

        

        

        long neg = (negative

                    * (negative - 1))

                   / 2;

 

        

        return pos + neg;

    }

 

    

    public static void main(String[] args)

    {

        int arr[] = { 1, -5, 0, 2, -7 };

        int N = arr.length;

 

        

        System.out.println(countPairs(arr, N));

    }

}

Complejidad del tiempo: EN)
cuarto auxiliar: O(1)

Su Calificación Nos Ayuda a Mejorar