Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 연산을 수행한 후 배열에서 같은 수의 최대 개수

<시간/>

정수 배열이 제공됩니다. 목표는 주어진 연산을 수행한 후 동일한 배열의 최대 수를 찾는 것입니다 -

  • i !=j 및

    가 되도록 두 개의 요소 a[i] 및 a[j]를 선택합니다.
  • a[i] 증가 및 감소 a[j] ( a[i]++,a[j]-- )

배열의 합을 취하여 요소 수로 나눕니다. N이 array의 크기인 경우

합을 N으로 나눌 수 있으면 같은 수도 N이 됩니다. 그렇지 않으면 같은 수는 N-1이 됩니다.

입력

Arr[]= { 1,2,3 }

출력

Maximum count of equal numbers : 3

설명 − 첫 번째 단계 이후 Arr[] ={ 2,2,2 } 1 증가 및 3 감소 요소의 합은 1+2+3=6, 6%3==0이므로 동일한 숫자=3

입력

Arr[]= { 1,2,4 }

출력

Maximum count of equal numbers : 2

설명 − 첫 번째 단계 후 Arr[] ={ 1,3,3 } 2 증가 및 4 감소 요소의 합은 1+2+4=7, 7%3==1이므로 동일한 숫자=3-1=2

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 정수 배열 Arr[]은 정수를 저장하는 데 사용됩니다.

  • 정수 '크기'는 배열의 길이를 저장합니다.

  • 함수 maxEqual( int arr[], int n)은 배열의 크기를 입력으로 받아 주어진 연산을 적용한 후 배열에 존재하는 동일한 수의 최대 개수를 반환합니다.

  • 먼저 배열 요소의 합을 계산하고 'sum'에 저장합니다.

  • 이제 합계를 크기 n(sum%n==0)으로 나눌 수 있는지 확인합니다.

  • 나눌 수 있으면 n

    을 반환합니다.
  • 그렇지 않으면 결과로 n-1을 반환합니다.

예시

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

출력

Maximum count of equal numbers: 4