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

C++ प्रोग्राम: दी गई सीक्वेंस का लॉन्गेस्ट इन्क्रीजिंग सबसीक्वेंस ढूंढना


लॉन्गेस्ट इन्क्रीजिंग सबसीक्वेंस (LIS) एक ऐसा सबसीक्वेंस होता है जहां प्रत्येक एलिमेंट अपने पिछले एलिमेंट से बड़ा होता है।

यहां हम पूर्णांकों के एक सेट से लॉन्गेस्ट इन्क्रीजिंग सबसीक्वेंस की लंबाई ढूंढने का प्रयास करेंगे।

इनपुट: पूर्णांकों का सेट {0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15}
आउटपुट: लॉन्गेस्ट इन्क्रीजिंग सबसीक्वेंस की लंबाई। यहां यह 6 है। सबसीक्वेंस है: 0, 2, 6, 9, 13, 15।

एल्गोरिदम

longestSubSeq(subarray, n)

इनपुट: सब ऐरे और सब ऐरे का आकार।

आउटपुट: लॉन्गेस्ट इन्क्रीजिंग सबसीक्वेंस की लंबाई।

Begin
    length नामक आकार n का ऐरे परिभाषित करें
    शुरुआत में length के सभी एंट्रीज़ को 0 पर सेट करें
    i := 1 से n-1 तक, करें
        j := 0 से i-1 तक, करें
            यदि subarray[j] < subarray[i] और length[j] > length[i], तो
                length[i] := length[j]
        किया
        length[i] को 1 से बढ़ाएं
    किया
    lis := 0
    i := 0 से n-1 तक, करें
        lis := lis और length[i] का अधिकतम
    किया
    lis लौटाएं
End

उदाहरण कोड

#include <iostream>
using namespace std;

int longestSubSeq(int subArr[], int n) {
    int length[n] = { 0 }; // सभी length को 0 पर सेट करें
    length[0] = 1; // subArr[0] के साथ खत्म होने वाला सबसीक्वेंस 1 है
    
    for (int i = 1; i < n; i++) {
        // पहला कैरेक्टर इग्नोर करें, दूसरे से सभी
        for (int j = 0; j < i; j++) {
            // सबसीक्वेंस subArr[j] के साथ खत्म होता है
            if (subArr[j] < subArr[i] && length[j] > length[i])
                length[i] = length[j];
        }
        length[i]++; // arr[i] जोड़ें
    }
    
    int lis = 0;
    for (int i = 0; i < n; i++) // लॉन्गेस्ट इन्क्रीजिंग सबसीक्वेंस ढूंढें
        lis = max(lis, length[i]);
    
    return lis;
}

int main() {
    int arr[] = { 0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15 };
    int n = 16;
    cout << "Length of Longest Increasing Subsequence is: " << longestSubSeq(arr, n);
    return 0;
}

आउटपुट

Length of Longest Increasing Subsequence is: 6

  1. - C++ प्रोग्राम: टीम सदस्यों के सूचकांकों का अनुक्रम ढूंढें

    मान लीजिए हमारे पास n तत्वों वाला एक सरणी A और एक संख्या k है। एक कक्षा में n छात्र हैं। i-वें छात्र की रेटिंग A[i] है। हमें k छात्रों के साथ एक टीम बनानी है जैसे कि सभी टीम सदस्यों की रेटिंग अलग-अलग हो। यदि संभव नहीं है तो Impossible वापस करें, अन्यथा सूचकांकों का अनुक्रम वापस करें। उदाहरण के लिए,

  1. दिए गए ग्राफ में ब्रिज एज की संख्या ज्ञात करने का C++ प्रोग्राम दिए गए ग्राफ में ब्रिज एज की संख्या ज्ञात करने का C++ प्रोग्राम

    मान लीजिए n वर्टेक्स और m एज वाला एक अनभारित, निदेश रहित ग्राफ दिया गया है। ग्राफ में एक ब्रिज एज वह एज है जिसे हटाने से ग्राफ असंबद्ध हो जाता है। हमें दिए गए ग्राफ में ऐसी एज की संख्या ज्ञात करनी है। ग्राफ में समानांतर एज या सेल्फ-लूप नहीं हैं। उदाहरण के लिए, यदि इनपुट है n = 5, m = 6, edges = {{1

  1. - C++ प्रोग्राम: सीक्वेंस के सेट में सभी सीक्वेंस के लिए कॉमन सबसे लंबी सबसीक्वेंस खोजना

    यहां हम एक C++ प्रोग्राम पर चर्चा करेंगे जो एक सेट ऑफ सीक्वेंस में सभी सीक्वेंस के लिए कॉमन सबसे लंबी सबसीक्वेंस खोजता है। एल्गोरिदम Begin स्ट्रिंग्स की ऐरे को इनपुट के रूप में लें। function matchedPrefixtill(): स्ट्रिंग s1 और s2 के बीच मैच्ड प्रीफिक्स खोजें: n1 = स्ट्रिंग s1 की लं