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

C++ में जोड़े की अधिकतम लंबाई श्रृंखला

जोड़े की एक श्रृंखला दी गई है। प्रत्येक जोड़ी में दो पूर्णांक होते हैं और पहला पूर्णांक हमेशा छोटा होता है, और दूसरा बड़ा होता है, वही नियम श्रृंखला निर्माण के लिए भी लागू किया जा सकता है। एक जोड़ी (x, y) को एक जोड़ी (p, q) के बाद जोड़ा जा सकता है, केवल अगर q

इस समस्या को हल करने के लिए, पहले हमें दिए गए युग्मों को पहले तत्व के बढ़ते क्रम में क्रमबद्ध करना होगा। उसके बाद हम जोड़ी के दूसरे तत्व की तुलना अगले जोड़े के पहले तत्व से करेंगे।

इनपुट - संख्या जोड़े की एक श्रृंखला। {(5, 24), (15, 25), (27, 40), (50, 60)}

आउटपुट - दिए गए मानदंड के अनुसार श्रृंखला की सबसे बड़ी लंबाई। यहाँ लंबाई 3 है।

एल्गोरिदम

maxChainLength(arr, n)
each element of chain will contain two elements a and b
Input: The array of pairs, number of items in the array.
Output: Maximum length.
Begin
   define maxChainLen array of size n, and fill with 1
   max := 0
   for i := 1 to n, do
      for j := 0 to i-1, do
         if arr[i].a > arr[j].b and maxChainLen[i] < maxChainLen[j] + 1
            maxChainLen[i] := maxChainLen[j] + 1
      done
   done
   max := maximum length in maxChainLen array
   return max
End

उदाहरण

#include<iostream>
#include<algorithm>
using namespace std;
struct numPair{ //define pair as structure
   int a;
   int b;
};
int maxChainLength(numPair arr[], int n){
   int max = 0;
   int *maxChainLen = new int[n]; //create array of size n
   for (int i = 0; i < n; i++ ) //Initialize Max Chain length values for all indexes
      maxChainLen[i] = 1;
   for (int i = 1; i < n; i++ )
      for (int j = 0; j < i; j++ )
         if ( arr[i].a > arr[j].b && maxChainLen[i] < maxChainLen[j] + 1)
            maxChainLen[i] = maxChainLen[j] + 1;
            // maxChainLen[i] now holds the max chain length ending with pair i
   for (int i = 0; i < n; i++ )
      if ( max < maxChainLen[i] )
         max = maxChainLen[i]; //find maximum among all chain length values
         delete[] maxChainLen; //deallocate memory
   return max;
}
int main(){
   struct numPair arr[] = {{5, 24},{15, 25},{27, 40},{50, 60}};
   int n = 4;
   cout << "Length of maximum size chain is " << maxChainLength(arr, n);
}

आउटपुट

Length of maximum size chain is 3

  1. C++ में जॉब शेड्यूलिंग में अधिकतम लाभ

    मान लीजिए कि हमारे पास अलग-अलग कार्य हैं, जहां प्रत्येक कार्य प्रारंभ समय [i] से समाप्ति समय [i] तक किया जाना निर्धारित है, उस कार्य के लिए हमें लाभ का लाभ मिलता है [i]। हम स्टार्टटाइम, एंडटाइम और प्रॉफिट लिस्ट को जानते हैं, हमें अधिकतम लाभ का पता लगाना होगा जो हम इस तरह ले सकते हैं कि ओवरलैपिंग टाइ

  1. सी ++ में लंबाई एल की स्ट्रिंग के जादुई जोड़े की संख्या पाएं।

    मान लीजिए कि हमारे पास दो तार str1 और str2 हैं, हमें लंबाई L के कई जादुई जोड़े खोजने हैं। दो तार जादुई होंगे यदि प्रत्येक अनुक्रमणिका I के लिए, str1[i]

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

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