हमें पहले एन प्राकृतिक संख्याओं के क्रमपरिवर्तन की एक सरणी दी गई है। यहां लक्ष्य उन तत्वों के सूचकांक जोड़े को खोजना है जो नीचे उल्लिखित शर्तों को पूरा करते हैं -
यदि कोई सरणी Arr[] है, तो i,j अनुक्रमणिका हैं, तत्व जोड़े की गणना करें जैसे Arr[i]+Arr[j]=max(Arr[x])जैसे कि i<=x<=j.
अर्थात्, Arr[i] और A[j] का योग इन दो खंडों के बीच होने वाले अधिकतम तत्व के बराबर है।
इनपुट
Arr[]= { 2,4,1,3,6,5 }
आउटपुट
Count of index pairs which satisfy the given condition:1
स्पष्टीकरण − जोड़ियों का योग दिया गया है -
2+4=6, 6 अधिकतम है लेकिन 2 और 4 के बीच नहीं है।
2+1=3, 3 2 और 1 के बीच में नहीं है और उनके बीच अधिकतम 4 है।
2+3=5, 5 2 और 3 के बीच में नहीं है और उनके बीच अधिकतम 4 है।
2+6=8, 8 2 और 6 के बीच में नहीं है और उनके बीच अधिकतम 4 है।
इसी तरह
1+5=6, 6 1 और 5 के बीच में है और उनके बीच अधिकतम 6 है।
सभी में से केवल 1 जोड़ा मौजूद है जो शर्त को पूरा करता है।
इनपुट
Arr[]= { 1,2,5,4,3 }
आउटपुट
Count of index pairs which satisfy the given condition:2
स्पष्टीकरण − जोड़ियों का योग दिया गया है -
1+5=6, 6 अधिकतम है लेकिन 1 और 5 के बीच नहीं है।
1+4=5, 5 1 और 4 के बीच में है और उनके बीच अधिकतम 5 है।
2+3=5, 5 2 और 3 के बीच में है और उनके बीच अधिकतम 5 है।
1+3=4, 4 1 और 3 के बीच में है लेकिन उनके बीच अधिकतम 5 है।
सभी में से 2 जोड़े मौजूद हैं जो शर्त को पूरा करते हैं।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
पूर्णांक सरणी Arr[] संख्याओं को संग्रहीत करता है और इसकी लंबाई को आकार देता है।
-
फंक्शन काउंटपेयर्स (इंट ए [], इंट एन) इनपुट के रूप में एक ऐरे और उसके आकार को लेता है और उन युग्मों की गिनती देता है जो उपरोक्त शर्त को पूरा करते हैं ..
-
ऐसे जोड़ियों के लिए शुरुआती मान 0 को स्टोर करने के लिए वेरिएबल काउंट का इस्तेमाल किया जाता है।
-
अब तक मिले अधिकतम मान के मान और अनुक्रमणिका को संग्रहीत करने के लिए maxindex में पहले तत्व और उसके अनुक्रमणिका को 0 के रूप में max1 के साथ प्रारंभ करें।
-
लूप के लिए उपयोग करके सरणी को ट्रैवर्स करना प्रारंभ करें।
-
लूप के लिए नेस्टेड के अंदर अगर A[j]>=max1 दिया जाता है तो max1 और उसकी अनुक्रमणिका को j से अपडेट करें।
-
A[i] और A[j] की प्रत्येक जोड़ी के लिए यदि योग max1 के बराबर है और अनुक्रमणिका maxindex i और j के बीच में है, तो स्थिति संतुष्ट होने पर वेतन वृद्धि की गणना की जाती है।
-
अंत के बाद दोनों लूप गिनती में मौजूद परिणाम लौटाते हैं।
उदाहरण
// CPP implementation of the approach #include<bits/stdc++.h> using namespace std; // Function to return the count of // required index pairs int countPairs(int A[], int n){ // To store the required count int count = 0; int i,j,k; int max1=A[0]; int maxindex=0; for ( i = 0; i<n-1; i++){ for(j=i+1;j<n;j++){ if(A[j]>=max1){ max1=A[j]; maxindex=j; } if(A[i]+A[j]==max1 && maxindex>=i && maxindex<=j) count++; } } // Return count of subsegments return count; } int main(){ int Arr[] = {3, 4, 6, 1, 5, 2}; int size =6; cout <<endl<<"Count of index pairs which satisfy the given condition:" <<countPairs(Arr,size); return 0; }
आउटपुट
Count of index pairs which satisfy the given condition:1