हमें एक सरणी दी गई है, मान लीजिए, किसी भी आकार के पूर्णांक तत्वों की गिरफ्तारी [] और एक सकारात्मक पूर्णांक k और कार्य उन तत्व जोड़े की गणना करना है जिनका पूर्ण अंतर दिए गए पूर्णांक k से अधिक नहीं है।
एक प्रकार की डेटा संरचना को व्यवस्थित करता है जो एक ही प्रकार के तत्वों के एक निश्चित आकार के अनुक्रमिक संग्रह को संग्रहीत कर सकता है। डेटा के संग्रह को संग्रहीत करने के लिए एक सरणी का उपयोग किया जाता है, लेकिन एक सरणी को उसी प्रकार के चर के संग्रह के रूप में सोचना अक्सर अधिक उपयोगी होता है।
उदाहरण के लिए
Input − int arr[] = {2, 3, 6, 12, 14}, k= 5
Output − count is : 3 स्पष्टीकरण - अधिकतम निरपेक्ष अंतर वाले जोड़े k यानी 5 से अधिक नहीं इस उदाहरण में जोड़े गए जोड़े हैं:(2, 3), (2, 6), (3,6) यानी {2, 3, 6} इसलिए गिनती 3 है।
Input − int arr[] = {2, 3, 6, 12, 14}, k= 10
Output − count is : 4 स्पष्टीकरण - अधिकतम निरपेक्ष अंतर वाले जोड़े k यानी 10 से अधिक नहीं इस उदाहरण में जोड़े गए जोड़े हैं:(2, 3), (2, 6), (3,6), (2, 12), (3, 12) ), (6, 12) यानी {2, 3, 6, 12} इसलिए गिनती 4 है क्योंकि अधिकतम तत्व 4 हैं।
Input − int arr[] = {2, 3, 6, 12, 14}, k= 0
Output − count is : 0 स्पष्टीकरण - चूंकि 0 के रूप में अंतर के साथ कोई जोड़ी नहीं है इसलिए गिनती 0 है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
एक सरणी बनाएं मान लें, arr[] और एक धनात्मक पूर्णांक k
-
लंबाई () फ़ंक्शन का उपयोग करके एक सरणी की लंबाई की गणना करें जो एक सरणी में तत्वों के अनुसार एक पूर्णांक मान लौटाएगा।
-
एक अस्थायी चर लें जो तत्वों की संख्या को संग्रहीत करेगा।
-
दो अस्थायी चर घोषित करें, मान लें, पहला और आखिरी और 0 के साथ आरंभ करें
-
किसी सरणी को सॉर्ट करने के लिए सॉर्ट विधि को कॉल करें और फ़ंक्शन के तर्क के रूप में सरणी और सरणी के आकार को पास करें।
-
i से 0 के लिए लूप प्रारंभ करें और मैं एक सरणी के आकार से छोटा हूं
-
लूप के अंदर, शुरू करें जबकि j<आकार और arr[j] <=arr[i] + k
-
अंदर, IF गिनती की जाँच करें
-
गिनती वापस करें
-
परिणाम प्रिंट करें।
उदाहरण
#include <iostream>
#include <algorithm>
using namespace std;
int countmax(int arr[], int size, int K){
int result = 0;
int i = 0, j = 0;
int beg = 0;
int end = 0;
// Sort the array
sort(arr, arr + size);
// Find max elements
for (i = 0; i < size; i++) {
// Count all elements which are in the range
while (j < size && arr[j] <= arr[i] + K)
j++;
if (result < (j - i)) {
result = (j - i);
beg = i;
end = j;
}
}
// Return the max count
return result;
}
// main function
int main(){
int arr[] = { 2, 3, 6, 12, 14 };
int size = sizeof(arr) / sizeof(arr[0]);
int K = 5;
cout <<"count is "<<countmax(arr, size, K) << endl;
return 0;
} आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो हमें निम्न आउटपुट मिलेगा -
count is 3