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

आसन्न तत्वों के बीच अंतर के साथ अधिकतम लंबाई के बाद या तो 0 या 1 | सी++ में 2 सेट करें

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

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

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

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

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

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

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

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

  • पूर्णांक प्रकार की एक सरणी इनपुट करें जिसमें सकारात्मक और साथ ही नकारात्मक तत्व हो सकते हैं।

  • एक सरणी के आकार की गणना करें और आगे की कार्यक्षमता के लिए एक सरणी और आकार को फ़ंक्शन में पास करें।

  • एक अस्थायी चर अधिकतम लें और इसे 0 पर सेट करें और दूसरा अस्थायी चर लें और इसे 0 पर भी सेट करें

  • unordered_map प्रकार का वैरिएबल un_map बनाएं

  • जब तक मैं आकार से कम नहीं हो जाता तब तक लूप शुरू करें

  • लूप के अंदर, लेन को 0 पर सेट करें और जांचें कि क्या un_map.find(arr[i]-1) !=un_map.end() &&len

  • जांचें कि क्या un_map.find(arr[i]) !=un_map.end() &&len सेट करें।

  • जांचें कि क्या un_map.find(arr[i]+1)!=un_map.end() &&len सेट करें।

  • अब un_map[arr[i]] =len + 1

    . सेट करें
  • जांचें कि क्या अधिकतम un_map[arr[i]] से कम है तो अधिकतम un_map[arr[i]]

    के साथ सेट करें
  • i

    . का मान बढ़ाएँ
  • अधिकतम वापसी

  • परिणाम प्रिंट करें

उदाहरण

#include <bits/stdc++.h>
using namespace std;
//calculate the maximum subsequence
int maximum_adj(int arr[], int size){
   int maximum = 0, i = 0;
   unordered_map<int, int> un_map;
   while(i < size){
      int len = 0;
      if (un_map.find(arr[i]-1) != un_map.end() && len < un_map[arr[i]-1]){
         len = un_map[arr[i]-1];
      }
      if (un_map.find(arr[i]) != un_map.end() && len < un_map[arr[i]]){
         len = un_map[arr[i]];
      }
      if (un_map.find(arr[i]+1) != un_map.end() && len < un_map[arr[i]+1]){
         len = un_map[arr[i]+1];
      }
      un_map[arr[i]] = len + 1;
      if (maximum < un_map[arr[i]]){
         maximum = un_map[arr[i]];
      }
      i++;
   }
   return maximum;
}
int main(){
   int arr[] = {2, 3, 1, 7, 5, 6, 7, 8};
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Maximum length subsequence with difference between adjacent elements as either 0
   or 1 are: "<< maximum_adj(arr, size);
   return 0;
}

आउटपुट

Maximum length subsequence with difference between adjacent elements as either 0 or 1 are: 4

  1. सी++ में नोड और पूर्वज के बीच अधिकतम अंतर

    मान लीजिए कि हमारे पास एक बाइनरी ट्री की जड़ है, हमें अधिकतम मान V ज्ञात करना है जिसके लिए अलग-अलग नोड A और B मौजूद हैं जहाँ V =| A का मान - B का मान | और A, B का पूर्वज है। इसलिए यदि पेड़ जैसा है - तब आउटपुट 7 होगा। पूर्वज नोड अंतर [(8 - 3), (7 - 3), (8 - 1), (10-13)] की तरह हैं, उनमें से (8

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

    समस्या कथन एन तत्वों की एक सरणी गिरफ्तारी [] को देखते हुए (0 ≤ गिरफ्तारी [i] 1000)। कार्य उप-सरणी की अधिकतम लंबाई को खोजना है जिसमें केवल बदसूरत संख्याएं हैं। बदसूरत संख्याएँ वे संख्याएँ होती हैं जिनके केवल अभाज्य गुणनखंड 2, 3 या 5 होते हैं। उदाहरण के लिए नीचे श्रृंखला से कुछ संख्याएँ हैं:1, 2, 3

  1. किन्हीं दो तत्वों के अंतर वाले m-तत्वों का समुच्चय C++ में k से विभाज्य है

    मान लीजिए कि हमारे पास एन सकारात्मक पूर्णांक के साथ एक सरणी है, और एक अन्य चर के है। हमें बिल्कुल एम-तत्वों को ढूंढना है, जैसे कि किन्हीं दो तत्वों के बीच का अंतर k के बराबर है। इसलिए यदि सरणी A =[4, 7, 10, 6, 9], और k =3 और m =3 है, तो आउटपुट हाँ होगा। जैसा कि हम 4, 7, 10 जैसे तीन तत्व पा सकते हैं।