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

अधिकतम विशिष्ट तत्वों वाले उपअनुक्रमों की गणना - C++

समस्या विवरण

हमें एक पूर्णांक सरणी दी गई है। लक्ष्य उन उपअनुक्रमों की संख्या ज्ञात करना है जिनमें अधिकतम संभव विशिष्ट तत्व हों।

उदाहरण

इनपुट: arr[] = {1,3,5,4,2,3,1}

आउटपुट: 4

व्याख्या: अधिकतम विशिष्ट तत्व: 1,2,3,4,5 (5 तत्व)। उपअनुक्रम: [1,3,5,4,2], [3,5,4,2,1], [5,4,2,3,1], [1,5,4,2,3]

इनपुट: arr[] = {5,4,2,1,3}

आउटपुट: 1

व्याख्या: सभी तत्व विशिष्ट हैं, केवल सरणी स्वयं ही उपअनुक्रम है।

दृष्टिकोण

यदि सभी तत्व विशिष्ट हैं तो उत्तर 1 है। यदि तत्व दोहराए जाते हैं, तो प्रत्येक दोहराया तत्व एक नया उपअनुक्रम बनाता है। सभी विशिष्ट तत्वों की आवृत्तियों का गुणनफल उत्तर देता है।

एल्गोरिदम

  1. प्रारंभिक count = 1
  2. अनऑर्डर्ड मैप hash में आवृत्तियाँ गिनें
  3. प्रत्येक आवृत्ति freq के लिए: count *= freq
  4. count लौटाएँ

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

int Max_distinct_subseq(int arr[], int size) {
    int count = 1;
    unordered_map hash;
    
    for (int i = 0; i < size; i++) hash[arr[i]]++;
    
    for (auto& it : hash) count *= it.second;
    
    return count;
}

int main() {
    int arr[] = {3, 7, 3, 3, 1, 5, 6, 9};
    int size = sizeof(arr) / sizeof(arr[0]);
    cout << "Count: " << Max_distinct_subseq(arr, size);
    return 0;
}

आउटपुट

Count: 3
  1. - C++ कोड: बनाए जा सकने वाले अधिकतम समूहों की गिनती

    मान लीजिए हमारे पास n तत्वों वाली एक सरणी A है। n छात्र समूह थे। एक समूह या तो एक व्यक्ति है जो किसी और के साथ कोड लिख सकता है, या दो लोग हैं जो एक ही टीम में कोड लिखना चाहते हैं। लेकिन मेंटर ने ठीक तीन लोगों की टीम बनाने का फैसला किया। हमें उन तीन लोगों की अधिकतम टीमों की संख्या ज्ञात करनी है जो मे

  1. - C++ कोड: पहले ढेर पर अधिकतम हे-बेल्स की गणना करें

    मान लीजिए हमारे पास n तत्वों की एक सरणी A और एक अन्य मान d है। एक किसान ने फर्म पर n हे-बेल ढेर व्यवस्थित किए हैं। iवें ढेर में A[i] हे-बेल हैं। हर दिन एक गाय किसी भी ढेर में एक हे-बेल को आसन्न ढेर में ले जाना चुन सकती है। गाय एक दिन में ऐसा कर सकती है अन्यथा कुछ नहीं कर सकती। गाय d दिनों में पहले ढ

  1. C++ में अधिकतम मोड़ों वाला पथ लंबाई C++ में अधिकतम मोड़ों वाला पथ लंबाई

    एक समस्या को हल करने के लिए जिसमें हमें एक बाइनरी ट्री दिया गया है। अब हमें अधिकतम संख्या में मोड़ों वाला पथ खोजने की आवश्यकता है। यानी, एक मोड़ तब माना जाता है जब पथ की दिशा बाएं से दाएं या इसके विपरीत बदलती है, उदाहरण के लिएइनपुट -आउटपुट -6अब इस दृष्टिकोण में, हम ट्री को पार करेंगे और पिछली गतिविध