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

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


हमें किसी भी आकार का एक सरणी दिया गया है और कार्य है उस सरणी में उपअनुक्रम ढूंढना जहां आसन्न तत्वों के बीच का अंतर 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 है।

प्रयुक्त दृष्टिकोण

  • पूर्णांक प्रकार की एक सरणी इनपुट करें जिसमें धनात्मक और ऋणात्मक दोनों तत्व हो सकते हैं।
  • सरणी का आकार गणना करें और सरणी व आकार को आगे की कार्यक्षमता के लिए फ़ंक्शन में पास करें।
  • इनपुट सरणी के समान आकार का एक अस्थायी सरणी लें, मान लीजिए temp[size] और एक चर maximum लें और इसे 0 पर सेट करें।
  • 0 से सरणी के आकार तक लूप शुरू करें।
  • लूप के अंदर, temp[i] को 1 पर सेट करें।
  • 1 से आकार तक एक और लूप शुरू करें।
  • इस लूप के अंदर, j को 0 से i से कम तक एक और लूप शुरू करें।
  • जांचें कि क्या आसन्न तत्वों का अंतर 0 या 1 है, तो temp[i] को temp[i] + 1 पर सेट करें।
  • 0 से आकार तक लूप शुरू करें।
  • लूप के अंदर, जांचें कि क्या maximum, temp[i] से कम है तो maximum = temp[i] सेट करें।
  • maximum लौटाएं।
  • परिणाम प्रिंट करें।

उदाहरण कोड

#include <bits/stdc++.h> using namespace std; // अधिकतम अंतर की गणना करने का फ़ंक्शन int maximum_adja(int arr[], int size){ int temp[size], maximum = 0; for (int i=0; i<size; i++){ temp[i] = 1; } for (int i=1; i<size; i++){ for (int j=0; j<i; j++){ if (abs(arr[i] - arr[j]) <= 1 && temp[i] < temp[j] + 1){ temp[i] = temp[j] + 1; } } } for (int i=0; i<size; i++){ if (maximum < temp[i]){ maximum = temp[i]; } } return maximum; } int main(){ int arr[] = {1, 5, 3, 7, 8, 9, 2}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"आसन्न तत्वों के बीच अंतर 0 या 1 होने पर अधिकतम लंबाई का उपअनुक्रम: "<<maximum_adja(arr, size); return 0; }

आउटपुट

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

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

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

  1. - C++ में बदसूरत संख्याओं वाले सब-ऐरे की अधिकतम लंबाई

    समस्या कथन N तत्वों का एक ऐरे arr[] दिया गया है (0 ≤ arr[i] ≤ 1000)। कार्य केवल बदसूरत संख्याओं वाले सब-ऐरे की अधिकतम लंबाई ढूंढना है। बदसूरत संख्याएं वे संख्याएं हैं जिनके केवल अभाज्य गुणनखंड 2, 3 या 5 होते हैं। उदाहरण के लिए नीचे श्रृंखला से कुछ संख्याएं हैं: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15,..

  1. - C++ में 0 या n मान वाले मैट्रिक्स का अधिकतम डिटरमिनेंट

    समस्या कथन हमें एक धनात्मक संख्या n दी गई है, और हमें एक 3x3 मैट्रिक्स ढूंढना है जिसे 0 या n के संयोजन से बनाया जा सकता है और जिसका डिटरमिनेंट अधिकतम हो। उदाहरण यदि n = 15 तो हम निम्नानुसार मैट्रिक्स बना सकते हैं: {{15, 15, 0}, {0, 15, 15}, {15, 0, 0}} किसी भी 3x3 मैट्रिक्स के लिए जिसके तत्व या त