Rumah > pembangunan bahagian belakang > C++ > 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
Lepaskan: 2023-09-03 19:01:10
ke hadapan
809 orang telah melayarinya

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
Salin selepas log masuk

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;
}
Salin selepas log masuk

Output

The number of operations required to make all array elements Equal is 3
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan