हमें किसी भी आकार की एक सरणी दी गई है और कार्य दिए गए सरणी में बाद के तत्वों को 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