हमें Arr[] संख्याओं की एक सरणी दी गई है। लक्ष्य उन युग्मों की संख्या गिनना है जिनका अंतर सभी संभावित युग्मों के अधिकतम अंतर के बराबर है। जोड़े गिनें (i!=j) और arr[x]- arr[y] अधिकतम संभव है।
हम इसे पहले अधिकतम अंतर ज्ञात करके करेंगे जहां (i!=j)। और maxdiff के रूप में स्टोर करें। फिर उन सभी जोड़ियों को गिनें जिनमें अंतर =मैक्सडिफ है।
आइए उदाहरणों से समझते हैं।
इनपुट - गिरफ्तारी [] ={ 1,2,3,2,4,1,5 }
आउटपुट − अधिकतम अंतर वाली जोड़ी चुनने के तरीकों की संख्या − 2
स्पष्टीकरण -
Here minimum no. is 1 and maximum number is 5, maximum difference =5-1=4 Pair 1 [ 1,2,3,2,4,1,5 ] → (1,5) difference=4 Pair 2 [ 1,2,3,2,4,1,5 ] → (1,5) difference=4 Number of pairs with difference which is maximum=2.
इनपुट - गिरफ्तारी [] ={ 2,4,2,4 }
आउटपुट − अधिकतम अंतर वाली जोड़ी चुनने के तरीकों की संख्या − 4
स्पष्टीकरण -
Here minimum no. is 2 and maximum number is 4, maximum difference =4-2=2 Pair 1 [ 2,4,2,4 ] → (2,4) difference=2 Pair 2 [ 2,4,2,4 ] → (2,4) difference=2 Pair 3 [ 2,4,2,4 ] → (4,2) difference=2 Pair 4 [ 2,4,2,4 ] → (2,4) difference=2 Number of pairs with difference which is maximum=4.
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
हम एक पूर्णांक सरणी लेते हैं Arr[] यादृच्छिक संख्याओं के साथ आरंभ किया गया।
-
एक वैरिएबल N लें जो Arr[] की लंबाई को स्टोर करता है।
-
फ़ंक्शन countPairs(int arr[],int n) एक सरणी लेता है, इसकी लंबाई इनपुट के रूप में और उन जोड़ों को चुनने के तरीके देता है जिनका अंतर अधिकतम अंतर के बराबर है।
-
तरीकों की संख्या के लिए प्रारंभिक चर गणना को 0 के रूप में लें।
-
चर अंतर को प्रत्येक जोड़ी के अंतर के रूप में लें।
-
मैक्सडिफ वैरिएबल को सभी जोड़ियों के अधिकतम अंतर के रूप में लें।
-
सरणी से अधिकतम और न्यूनतम मान खोजें और क्रमशः अधिकतम और मिनी में स्टोर करें
-
अब मैक्सडिफ मैक्स-मिनी होगा।
-
जोड़ी के प्रत्येक तत्व के लिए लूप के लिए दो का उपयोग करके ट्रैवर्स सरणी।
-
0<=i
-
गणना diff=arr[i]-arr[j] या arr[j]-arr[i] अलग के रूप में गिनें। यदि diff==maxdiff वृद्धि की गणना इस जोड़ी में अधिकतम अंतर के रूप में की जाती है।
-
सभी लूपों के अंत में काउंट में शर्त को पूरा करने वाले जोड़ों की कुल संख्या होगी।
-
परिणाम के रूप में गिनती लौटाएं।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
int countWays(int arr[],int n){
int count = 0;
int diff;
int maxdiff=0; //making minimum as larger than any product in array
int mini,maxx;
mini=maxx=arr[0];
for (int i = 0; i < n; i++) //find minimum and maximum values{
if(arr[i]<mini)
{mini=arr[i];}
if(arr[i]>maxx)
{ maxx=arr[i]; }
}
maxdiff=maxx-mini; //this is maximum difference
//cout<<maxx<<" "<<mini;
for (int i = 0; i < n-1; i++){
for (int j = i+1; j < n; j++){
diff=arr[i]-arr[j]; //pair 1
if ( diff==maxdiff ){
count++;
//cout<<endl<<"a :"<<arr[i]<<" b :"<<arr[j]; //to print
}
diff=arr[j]-arr[i]; //pair 2
if ( diff==maxdiff ){
count++;
//cout<<endl<<"a :"<<arr[i]<<" b :"<<arr[j]; //to print
}
}
}
return count;
}
int main(){
int Arr[]={ 3, 2, 1, 1, 3 };
int N=5; //length of array
cout <<endl<< "No. of ways of choosing pair with maximum difference : "<<countWays(Arr,N);
return 0;
} आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
No. of ways of choosing pair with maximum difference : 4