Saltar al contenido

Minimice la suma de la diferencia absoluta entre todos los pares de elementos de la matriz disminuyendo e incrementando los pares en 1

Minimice la suma de la diferencia absoluta entre todos los pares de elementos de la matriz disminuyendo e incrementando los pares en 1

Dada una matriz arr[] ( Indexación basada en 1 ) que consiste en norte Enteros, la tarea es encontrar la suma mínima de la diferencia absoluta entre todos los pares de elementos de la matriz dividiendo cada par de elementos por orden. se reduce e incrementa 1 tan seguido como quieras.

Ejemplos:

Entrada: arr[] = {1, 2, 3}
Producción: 0
Explicación:
Modifique los elementos de la matriz realizando las siguientes operaciones:

  • Seleccione los pares de elementos (arr[1], arr[3]) e incrementar y decrementar los pares cambia la matriz a {2, 2, 2}.

Después de las operaciones anteriores, la suma de las diferencias absolutas es | 2 – 2 | + | 2 – 2 | + | 2 – 2 | = 0. Entonces, salida 0.

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

Acercarse: El problema dado se puede describir con a. estar solucionado Enfoque codicioso. Se puede observar que minimiza la suma de la diferencia absoluta entre cada par de elementos de la matriz. arr[], la idea de cerrar cada elemento de la matriz juntos. Siga los pasos a continuación para resolver el problema:

  • Encuentra la suma de los elementos de la matriz arr[] y almacenarlo en una variable, digamos total.
  • Ahora bien, si el valor de A tararear es 0, luego imprime 0 ya que todos los elementos de la matriz se pueden igualar y el valor resultante de la expresión siempre. es 0. De lo contrario, encuentre el valor de A tararear y almacenarlo en una variable, decir R..
  • Ahora son todos los elementos de la matriz. A tararear, entonces podemos hacer R. Número de elementos de la matriz como 1 y el resto de los elementos de la matriz como 0 para minimizar el valor resultante.
  • Después de los pasos anteriores, la suma mínima de la diferencia absoluta viene dada por R * (N – R).

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

C ++

#include <bits/stdc++.h>

using namespace std;

 

int minSumDifference(int ar[], int n)

{

    

    int sum = 0;

 

    

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

        sum += ar[i];

 

    

    int rem = sum % n;

 

    

    return rem * (n - rem);

}

 

int main()

{

    int arr[] = { 3, 6, 8, 5, 2,

                  1, 11, 7, 10, 4 };

    int N = sizeof(arr) / sizeof(int);

    cout << minSumDifference(arr, N);

 

    return 0;

}

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

¡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 apta 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