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

सी ++ में 0 या 1 के रूप में आसन्न तत्वों के बीच अंतर के साथ अधिकतम लंबाई उपसरणी

हमें किसी भी आकार की एक सरणी दी गई है और कार्य दिए गए सरणी के उप-सरणी को 0 या 1 के रूप में आसन्न तत्वों के बीच अंतर वाले तत्वों के साथ खोजना है।

इनपुट - int arr[] ={ 2, 1, 5, 6, 3, 4, 7, 6}

आउटपुट − अधिकतम लंबाई उपसरणी जिसमें 0 या 1 के रूप में आसन्न तत्वों के बीच अंतर होता है − 2

स्पष्टीकरण - 0 या 1 के अंतर वाले सरणी में आसन्न तत्व {2, 1}, {5, 6}, { 3, 4} और {7.6} हैं। इसलिए, उपसरणी की अधिकतम लंबाई 2 है।

इनपुट - int arr[] ={ 2, 1, 7, 6, 5}

आउटपुट − अधिकतम लंबाई उपसरणी 0 या 1 के रूप में आसन्न तत्वों के बीच अंतर के साथ हैं − 3

स्पष्टीकरण - 0 या 1 के अंतर वाले सरणी में आसन्न तत्व {2, 1} और {7, 6, 5} हैं। इसलिए, उप-सरणी की अधिकतम लंबाई 3 है।

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • एक प्रकार के पूर्णांकों की एक सरणी इनपुट करें जिसमें सकारात्मक और साथ ही नकारात्मक तत्व हो सकते हैं।
  • एक सरणी के आकार की गणना करें और आगे की कार्यक्षमता के लिए एक सरणी और आकार को फ़ंक्शन में पास करें।
  • अस्थायी चर i लें और इसे 0 और अधिकतम चर पर सेट करें और इसे 0 पर सेट करें।
  • i से सरणी के आकार तक लूप प्रारंभ करें।
  • लूप के अंदर, j को i पर सेट करें
  • एक और लूप शुरू करें जो सबएरे की गणना आसन्न तत्वों के साथ करेगा चाहे वह itis 0 हो या नहीं।
  • लूप के अंदर, i का मान बढ़ाएँ।
  • अस्थायी को i-j+1 पर सेट करें
  • जांचें कि क्या अधिकतम तापमान से कम है तो अधिकतम तापमान पर सेट करें।
  • जांचें कि क्या j, i के बराबर है, तो i का मान बढ़ाएँ
  • अधिकतम लौटाएं
  • परिणाम प्रिंट करें।

उदाहरण

#include<bits/stdc++.h>
using namespace std;
//function to calculate maximum Length subarray with
// 0 or 1 difference between adjacent elements
int maximum_diff(int arr[], int size){
   int i = 0;
   int maximum = 0;
   while (i < size){
      int j = i;
      while (i+1 < size && (abs(arr[i] - arr[i + 1]) == 1 || abs(arr[i] - arr[i + 1]) == 0)){
         i++;
      }
      int temp = i - j + 1;
      if (maximum < temp){
         maximum = temp;
      }
      if(j == i){
         i++;
      }
   }
   return maximum;
}
int main(){
   int arr[] = { 2, 1, 5, 6, 3, 4, 7, 6};
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Maximum length subarray with difference between adjacent elements as either 0 or 1
   are: "<< maximum_diff(arr, size);
}

इनपुट

Maximum length subarray with difference between adjacent elements as either 0 or 1 are: 2

  1. C++ में किन्हीं दो तत्वों के बीच न्यूनतम अंतर ज्ञात कीजिए

    मान लीजिए कि हमारे पास n तत्वों की एक सरणी है जिसे A कहा जाता है। हमें उस सरणी में किन्हीं दो तत्वों के बीच न्यूनतम अंतर ज्ञात करना होगा। मान लीजिए A =[30, 5, 20, 9], तो परिणाम 4 होगा। यह तत्वों 5 और 9 की न्यूनतम दूरी है। इस समस्या को हल करने के लिए, हमें इन चरणों का पालन करना होगा - सरणी को घटत

  1. सी ++ में मैट्रिक्स के किसी भी कॉलम में अधिकतम अंतर के साथ जोड़ी खोजें

    मान लीजिए कि हमारे पास एक मैट्रिक्स या ऑर्डर NxN है। हमें ऐसे तत्वों का एक युग्म खोजना है जो मैट्रिक्स के किसी भी स्तंभ से अधिकतम अंतर बनाते हैं। तो अगर मैट्रिक्स की तरह है - 1 2 3 5 3 5 9 6 7 तो आउटपुट 8 होगा। चूंकि जोड़ी कॉलम 0 से (1, 9) है। विचार सरल है, हमें बस प्रत्येक कॉलम के अधिकतम और

  1. सी ++ में उत्पाद के बराबर एलसीएम के साथ अधिकतम लंबाई उपसरणी

    मान लीजिए कि हमारे पास एक सरणी A है। हमें उप-सरणी की अधिकतम लंबाई ज्ञात करनी है, जिसका LCM उस उप-सरणी के तत्वों के गुणनफल के समान है। यदि उस प्रकार का उप-सरणी नहीं मिलता है, तो -1 लौटाएं। मान लीजिए सरणी {6, 10, 21} है, तो लंबाई 2 है, क्योंकि उप-सरणी {10, 21} है, जिसका एलसीएम 210 है, और उत्पाद भी 210