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

จำนวนตัวเลขเท่ากันสูงสุดในอาเรย์หลังดำเนินการที่กำหนดใน C++


เราได้รับอาเรย์จำนวนเต็ม เป้าหมายคือหาจำนวนตัวเลขที่เท่ากันมากที่สุดหลังทำการดำเนินการ:

  • เลือก a[i] และ a[j] (i != j)
  • a[i]++, a[j]--

ผลรวมของอาเรย์ไม่เปลี่ยนแปลง หากผลรวมหาร n ลงตัว (sum % n == 0) ทำให้ทุกตัวเท่ากันได้ n ตัว มิฉะนั้น ทำให้เท่ากันได้ n-1 ตัว

อินพุต

Arr[] = {1, 2, 3}

เอาต์พุต

Maximum count of equal numbers: 3

คำอธิบาย − Sum=6, 6%3=0 → ทำให้ {2,2,2} ได้ 3 ตัว

อินพุต

Arr[] = {1, 2, 4}

เอาต์พุต

Maximum count of equal numbers: 2

คำอธิบาย − Sum=7, 7%3=1 → ทำให้เท่ากันได้ 2 ตัว (n-1)

วิธีการที่ใช้ในโปรแกรมด้านล่าง

  • อาเรย์ Arr[] และ size
  • ฟังก์ชัน maxEqual(int arr[], int n) คืนค่าจำนวนตัวเท่ากันสูงสุด
  • คำนวณ sum ของอาเรย์
  • ถ้า 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};
    int size = 4;
    cout << "Maximum count of equal numbers: " << maxEqual(Arr, size);
    return 0;
}

ผลลัพธ์

Maximum count of equal numbers: 4