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
Tatasusunan yang diperuntukkan ialah {4, 4, 4, 4}
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).
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; }
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!