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