Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

एक सरणी के अधिकतम तत्वों की गणना करें जिसका पूर्ण अंतर C++ में K से अधिक नहीं है

हमें एक सरणी दी गई है, मान लीजिए, किसी भी आकार के पूर्णांक तत्वों की गिरफ्तारी [] और एक सकारात्मक पूर्णांक 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

  1. उस नोड का पता लगाएं जिसका एक्स के साथ पूर्ण अंतर सी ++ में अधिकतम मूल्य देता है

    मान लीजिए कि हमारे पास एक पेड़ है, और सभी नोड्स का वजन और एक पूर्णांक x है। हमें नोड i को खोजना है, जैसे |वेट[i] - x| न्यूनतम है। यदि ग्राफ नीचे जैसा है, और x =15 आउटपुट 3 होगा। अब विभिन्न नोड्स के लिए, यह नीचे जैसा होगा नोड 1, |5 - 15| =10 नोड 2, |10 - 15| =5 नोड 3, |11 - 15| =4 नोड 4, |8 -

  1. एक ऐरे (सी++) में सम और विषम अनुक्रमित तत्वों का पूर्ण अंतर?

    यहां हम देखेंगे कि हम एक सरणी में विषम और यहां तक ​​कि अनुक्रमित तत्वों के पूर्ण अंतर कैसे प्राप्त कर सकते हैं। निरपेक्ष अंतर इंगित करता है कि यदि एक जोड़ी का अंतर ऋणात्मक है, तो निरपेक्ष मान लिया जाएगा। उदाहरण के लिए, मान लीजिए कि संख्याएँ {1, 2, 3, 4, 5, 6, 7, 8, 9} हैं। तो सम स्थिति तत्व 1, 3, 5,

  1. एक सरणी (सी ++) में सभी जोड़ीदार लगातार तत्वों का पूर्ण अंतर?

    इस समस्या में हम देखेंगे कि कैसे हम एक सरणी में तत्वों की प्रत्येक जोड़ी के तत्वों के बीच पूर्ण अंतर प्राप्त कर सकते हैं। यदि n तत्व हैं, तो परिणामी सरणी में n-1 तत्व होंगे। मान लीजिए कि तत्व {8, 5, 4, 3} हैं। परिणाम होगा |8-5| =3, तब |5-4| =1, |4-3|=1. एल्गोरिदम pairDiff(arr, n) begin