在 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
广告