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


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

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

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

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

如果总和能被 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[] 用于存储整数。

  • 整数 ‘size’ 存储数组的长度。

  • 函数 maxEqual( int arr[], int n) 以数组及其大小作为输入,并在应用给定操作后返回数组中存在的相等数字的最大数量。

  • 首先,我们将计算数组元素的总和并存储在 ‘sum’ 中

  • 现在检查 sum 能否被 size 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

更新于: 2020-07-28

967 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告