Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จำนวนสูงสุดของตัวเลขที่เท่ากันในอาร์เรย์หลังจากดำเนินการตามที่กำหนดใน 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[] ใช้เพื่อเก็บจำนวนเต็ม

  • จำนวนเต็ม 'ขนาด' เก็บความยาวของอาร์เรย์

  • ฟังก์ชัน maxEqual( int arr[], int n) รับอาร์เรย์ ขนาดเป็นอินพุตและส่งกลับจำนวนสูงสุดของตัวเลขที่เท่ากันในอาร์เรย์หลังจากใช้การดำเนินการที่กำหนด

  • ก่อนอื่นเราจะคำนวณผลรวมขององค์ประกอบอาร์เรย์และเก็บไว้ใน 'ผลรวม'

  • ตอนนี้ตรวจสอบการหารผลรวมด้วยขนาด 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