Heim  >  Artikel  >  Backend-Entwicklung  >  Ermitteln Sie in C++ die Anzahl der Operationen, die erforderlich sind, um alle Elemente eines Arrays gleich zu machen

Ermitteln Sie in C++ die Anzahl der Operationen, die erforderlich sind, um alle Elemente eines Arrays gleich zu machen

WBOY
WBOYnach vorne
2023-09-03 19:01:10742Durchsuche

Ermitteln Sie in C++ die Anzahl der Operationen, die erforderlich sind, um alle Elemente eines Arrays gleich zu machen

In diesem Problem erhalten wir ein Array arr der Größe n. Unsere Aufgabe besteht darin, die Anzahl der Operationen zu ermitteln, die erforderlich sind, um alle Array-Elemente gleich zu machen

Die Operation ist definiert als die Verteilung der Elemente des Arrays vom Element mit dem größten Gewicht bis zu einem gleichen Gewicht aller Elemente.

Wenn es nicht möglich ist, Array-Elemente gleich zu machen, geben Sie -1 aus.

Nehmen wir ein Beispiel, um dieses Problem zu verstehen,

Input : arr[] = {7, 3, 3, 3}
Output : 3

Erklärung

Das zugewiesene Array ist {4, 4, 4, 4}

Lösung

Eine einfache Möglichkeit, dieses Problem zu lösen, besteht darin, The zu finden Maximalwert des Arrays. Dieser Maximalwert wird dann verwendet, um zu prüfen, ob alle Elemente des Arrays gleich sind und ob der Wert gleich dem Maximalwert des Arrays minus n (oder einem Vielfachen davon) ist. Wenn ja, wird n zurückgegeben, wenn nein, wird -1 zurückgegeben (was anzeigt, dass dies nicht möglich ist).

Beispiel

Nehmen wir ein Beispiel, um das Problem zu verstehen

#include<bits/stdc++.h>
using namespace std;
int findOperationCount(int arr[],int n){
   int j = 0, operations = 0;
   int maxVal = arr[0];
   int minVal = arr[0];
   int maxValInd = 0;
   for (int i = 1; i < n; i++){
      if(arr[i] > maxVal){
         maxVal = arr[i];
         maxValInd = i;
      }
      if(arr[i] < minVal){
         minVal = arr[i];
      }
   }
   for (int i =0;i<n;i++){
      if (arr[i] != maxVal && arr[i] <= minVal && arr[i] != 0){
         arr[j] += 1;
         arr[maxValInd] -= 1;
         maxVal -= 1;
         operations += 1;
         j += 1;
      }
      else if (arr[i] != 0){
         j += 1;
      }
   }
   for (int i = 0; i < n; i++){
      if (arr[i] != maxVal){
         operations = -1;
         break;
      }
   }
   return operations;
}
int main(){
   int arr[] = {4, 4, 8, 4};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout<<"The number of operations required to make all array  elements Equal is "<<findOperationCount(arr, n);
   return 0;
}

Ausgabe

The number of operations required to make all array elements Equal is 3

Das obige ist der detaillierte Inhalt vonErmitteln Sie in C++ die Anzahl der Operationen, die erforderlich sind, um alle Elemente eines Arrays gleich zu machen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen