Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Dalam C++, cari bilangan operasi yang diperlukan untuk menjadikan semua elemen tatasusunan sama

Dalam C++, cari bilangan operasi yang diperlukan untuk menjadikan semua elemen tatasusunan sama

WBOY
WBOYke hadapan
2023-09-03 19:01:10743semak imbas

Dalam C++, cari bilangan operasi yang diperlukan untuk menjadikan semua elemen tatasusunan sama

Dalam masalah ini, kita mendapat array arr saiz n. Tugas kami ialah untuk mencari bilangan operasi yang diperlukan untuk menjadikan semua elemen tatasusunan sama

Operasi ditakrifkan sebagai mengagihkan elemen tatasusunan daripada elemen dengan berat terbesar kepada berat yang sama semua elemen.

Jika tidak mungkin untuk membuat elemen tatasusunan sama, cetak -1.

Mari kita ambil contoh untuk memahami masalah ini,

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

Penjelasan

Tatasusunan yang diperuntukkan ialah {4, 4, 4, 4}

Penyelesaian

Cara mudah untuk menyelesaikan masalah ini nilai maksimum tatasusunan. Nilai maksimum ini kemudiannya digunakan untuk menyemak sama ada semua elemen tatasusunan adalah sama, dan jika nilai itu sama dengan nilai maksimum tatasusunan tolak n (atau gandaan daripadanya). Jika ya, n dikembalikan, jika tidak, -1 dikembalikan (menunjukkan bahawa ia tidak mungkin).

Contoh

Mari kita ambil contoh untuk memahami masalahnya

#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;
}

Output

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

Atas ialah kandungan terperinci Dalam C++, cari bilangan operasi yang diperlukan untuk menjadikan semua elemen tatasusunan sama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam