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

दिए गए सेट के MEX को C++ में 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 का गुणज बनाने के लिए न्यूनतम संचालन

    मान लीजिए कि हमारे पास एक सरणी गिरफ्तारी और दूसरा मान k है। हमें सरणी के GCD को k के गुणज के बराबर बनाने के लिए न्यूनतम संख्या में संक्रियाओं का पता लगाना होगा। इस मामले में, ऑपरेशन मूल्य में वृद्धि या कमी कर रहा है। मान लीजिए कि सरणी {4, 5, 6} की तरह है, और k 5 है। हम 4 को 1 से बढ़ा सकते हैं और 6 क