Heim > Backend-Entwicklung > C++ > 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
Freigeben: 2023-09-03 19:01:10
nach vorne
839 Leute haben es durchsucht

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
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

Ausgabe

The number of operations required to make all array elements Equal is 3
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage