在 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 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告