在C ++中执行给定操作后,数组中最大数目的相等数

给我们一个整数数组。目标是在执行给定操作后找到数组中等于的最大数-

  • 选择两个元素a [i]和a [j],使i!= j和

  • 递增a [i]并递减a [j](a [i] ++,a [j]-)

我们将取数组的总和除以元素数。如果N是数组的大小,则

如果sum可被N整除,则相等的数字也将为N,否则相等的数字将为N-1。

输入值

Arr[]= { 1,2,3 }

输出结果

最大数目等于 3

说明-第一步Arr [] = {2,2,2}递增1递减3元素之和为1 + 2 + 3 = 6,6%3 == 0,因此等于3

输入值

Arr[]= { 1,2,4 }

输出结果

最大数目等于 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};
   //数组的大小
   int size =4;
   cout <<" 最大数目等于"<< maxEqual(Arr,size);
   return 0;
}

输出结果

Maximum count of equal numbers: 4