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