Computer >> Máy Tính >  >> Lập trình >> C ++

Số lượng tối đa các số bằng nhau trong một mảng sau khi thực hiện các phép toán nhất định trong C ++

Chúng tôi được cung cấp với một mảng các số nguyên. Mục đích là để tìm các số lớn nhất trong mảng là hệ quả sau khi thực hiện các phép toán đã cho -

  • Chọn hai phần tử a [i] và a [j] sao cho i! =J và

  • Số tăng a [i] và giảm a [j] (a [i] ++, a [j] -)

Chúng ta sẽ lấy tổng của mảng và chia nó cho số phần tử. Nếu N là kích thước của mảng thì

Nếu tổng chia hết cho N thì các số bằng nhau cũng sẽ là N, ngược lại Các số bằng nhau sẽ là N-1.

Đầu vào

Arr[]= { 1,2,3 }

Đầu ra

Maximum count of equal numbers : 3

Giải thích - Sau bước đầu tiên Arr [] ={2,2,2} tăng 1 và giảm 3 Tổng các phần tử là 1 + 2 + 3 =6, 6% 3 ==0, do đó các số bằng nhau =3

Đầu vào

Arr[]= { 1,2,4 }

Đầu ra

Maximum count of equal numbers : 2

Giải thích - Sau bước đầu tiên Arr [] ={1,3,3} tăng 2 và giảm 4 Tổng các phần tử là 1 + 2 + 4 =7, 7% 3 ==1, do đó các số bằng nhau =3-1 =2

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Mảng số nguyên Arr [] được sử dụng để lưu trữ các số nguyên.

  • Số nguyên 'kích thước' lưu trữ độ dài của mảng.

  • Hàm maxEqual (int arr [], int n) nhận một mảng, kích thước của nó làm đầu vào và trả về tổng số tối đa của các số bằng nhau có trong mảng sau khi áp dụng một phép toán nhất định.

  • Trước hết, chúng ta sẽ tính tổng các phần tử của mảng và lưu trữ trong ‘sum’

  • Bây giờ hãy kiểm tra tính chia hết của tổng cho kích thước n (sum% n ==0).

  • Nếu chia hết thì trả về n

  • Kết quả là trả về n-1.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int maxEqual(int arr[], int n){
   int sum = 0;
   for (int i = 0; i < n; i++){
      sum += arr[i];
   }
   if (sum%n==0){
      return n;
   }
   return n-1;
}
int main(){
   int Arr[] = { 1, 4, 1, 2};
   // size of an array
   int size =4;
   cout <<" Maximum count of equal numbers :"<< maxEqual(Arr,size);
   return 0;
}

Đầu ra

Maximum count of equal numbers: 4