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

C++ में दिए गए सेट के MEX को x के बराबर बनाने के लिए न्यूनतम ऑपरेशन्स


समस्या विवरण

n इंटीजर्स का एक सेट दिया गया है, न्यूनतम संख्या में ऑपरेशन्स (आप सेट में एलिमेंट्स इन्सर्ट/डिलीट कर सकते हैं) करके सेट के MEX को x के बराबर बनाएं (जो दिया गया है)।

नोट - एक इंटीजर्स सेट का MEX वह न्यूनतम नॉन-नेगेटिव इंटीजर है जो उसमें मौजूद नहीं है। उदाहरण के लिए, सेट {0, 2, 4} का MEX 1 है और सेट {1, 2, 3} का MEX 0 है।

उदाहरण

यदि n = 5 और x = 3 और ऐरे है {0, 4, 5, 6, 7} तो हमें न्यूनतम 2 ऑपरेशन्स की आवश्यकता है।

एल्गोरिदम

  • दृष्टिकोण यह देखना है कि अंतिम सेट में x से कम सभी एलिमेंट्स मौजूद होने चाहिए, x मौजूद नहीं होना चाहिए और x से बड़ा कोई भी एलिमेंट मायने नहीं रखता।
  • इसलिए, हम उन एलिमेंट्स की संख्या गिनेंगे जो x से कम हैं लेकिन प्रारंभिक सेट में मौजूद नहीं हैं और इसे उत्तर में जोड़ देंगे।
  • यदि x मौजूद है तो हम उत्तर में 1 जोड़ देंगे क्योंकि x को हटाया जाना चाहिए।

उदाहरण

#include <iostream> 
using namespace std; 

int getMinOperations(int *arr, int n, int x) { 
    int k = x, i = 0; 
    while (n--) { 
        if (arr[n] < x) { 
            --k; 
        } 
        if (arr[n] == x) { 
            ++k; 
        } 
    } 
    return k; 
} 

int main() { 
    int arr[] = {0, 4, 5, 6, 7}; 
    int n = sizeof(arr) / sizeof(arr[0]); 
    int x = 3; 
    cout << "Minimum required operations = " << getMinOperations(arr, n, x) << endl; 
    return 0; 
}

आउटपुट

जब आप उपरोक्त प्रोग्राम को कंपाइल और एक्जीक्यूट करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है:

Minimum required operations = 2

  1. - C++ में सभी तत्वों को समान बनाने के लिए न्यूनतम मूव्स

    समस्या कथन N तत्वों की एक सरणी और एक पूर्णांक K दिया गया है। दी गई सरणी पर निम्न ऑपरेशन किसी भी संख्या में बार करना अनुमत है: K-वें तत्व को सरणी के अंत में डालें और सरणी के पहले तत्व को हटाएं। कार्य सरणी के सभी तत्वों को समान बनाने के लिए आवश्यक न्यूनतम मूव्स की संख्या ढूंढना है। यदि संभव नहीं

  1. - C++ में दो स्ट्रिंग्स को समान बनाने के लिए दिए गए ऑपरेशन के न्यूनतम नंबर

    समस्या कथन दो स्ट्रिंग्स str1 और str2 दी गई हैं, दोनों में a और b वर्ण हैं। दोनों स्ट्रिंग्स समान लंबाई की हैं। दोनों स्ट्रिंग्स में एक _ (खाली स्थान) है। पहले स्ट्रिंग को दूसरी स्ट्रिंग में बदलने के लिए निम्न ऑपरेशन का उपयोग करके न्यूनतम ऑपरेशन की संख्या ढूंढें: यदि _ स्थिति i पर है तो _ को स्

  1. - C++ में सरणी के GCD को k का गुणक बनाने के लिए न्यूनतम ऑपरेशन

    मान लीजिए हमारे पास एक सरणी arr और एक अन्य मान k है। हमें सरणी के GCD को k का गुणक बनाने के लिए न्यूनतम ऑपरेशंस की संख्या ढूंढनी है। यहां ऑपरेशन मान को बढ़ाना या घटाना है। मान लीजिए सरणी {4, 5, 6} है, और k 5 है। हम 4 को 1 से बढ़ा सकते हैं, और 6 को 1 से घटा सकते हैं, तो यह 5 बन जाता है। यहां ऑपरेशंस