हमें पूर्णांकों की एक सरणी दी गई है। लक्ष्य सरणी में अधिकतम संख्याएँ ज्ञात करना है जो दिए गए कार्यों को करने के बाद बराबर हैं -
-
दो तत्वों का चयन करें 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) एक सरणी लेता है, इसका आकार इनपुट के रूप में होता है और दिए गए ऑपरेशन को लागू करने के बाद सरणी में मौजूद बराबर संख्याओं की अधिकतम संख्या देता है।
-
सबसे पहले हम सरणी तत्वों के योग की गणना करेंगे और 'sum' में स्टोर करेंगे
-
अब आकार 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