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