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

यह जांचने के लिए कि कोई संख्या C++ में L-R की N श्रेणी में है या नहीं?

इस समस्या में, हमें एन रेंज [एल, आर] और क्यू प्रश्न दिए गए हैं जिनमें से प्रत्येक में एक संख्या वैल है। हमारा काम यह जांचने के लिए क्वेरीज़ को हल करने के लिए एक प्रोग्राम बनाना है कि कोई नंबर C++ में L-R की N रेंज में है या नहीं।

समस्या का विवरण

हमें [एल, आर] प्रकार की एन रेंज दी गई है जिसमें एल से आर तक पूर्णांक मान शामिल हैं, उदाहरण के लिए, रेंज [3, 6] में 3,4,5,6 शामिल हैं। प्रत्येक प्रश्न में, हमें एक वैल दिया जाता है, जिसकी उपस्थिति की जाँच की जानी है। यदि किसी एक श्रेणी में वैल मौजूद है तो प्रोग्राम सही वापस आ जाएगा अन्यथा यह झूठी वापसी करेगा।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट :रेंज [एन] ={{2, 4}, {6,7}, {9, 12}}

क्यू =3

क्वेरी ={1, 7, 10}

आउटपुट :मौजूद नहीं

वर्तमान

वर्तमान

स्पष्टीकरण

क्वेरी 1 के लिए:नंबर 1 किसी भी श्रेणी में मौजूद नहीं है।

क्वेरी 2 के लिए:संख्या 7 {6, 7} की श्रेणी में मौजूद है।

क्वेरी 1 के लिए:संख्या 10 {9, 12} की सीमा में मौजूद है।

समाधान दृष्टिकोण

हमें यह जांचने की आवश्यकता है कि क्या वैल किसी भी श्रेणी में मौजूद है, इसलिए हमें इसे सभी श्रेणियों के अनुरूप वैल की जांच करने की आवश्यकता है। इसके लिए, हम एक हैशमैप का उपयोग करेंगे। रेंज के एल और आर को अलग-अलग स्टोर करना और फिर बाइनरीसर्च एल्गोरिदम का उपयोग करके खोजना आसानी से समाधान कर देगा।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
vector<int> v;
unordered_map<int, int> mpp;
void initialiseMap(int a[][2], int n){
   for (int i = 0; i < n; i++) {
      v.push_back(a[i][0]);
      mpp[a[i][0]] = 1;
      v.push_back(a[i][1]);
      mpp[a[i][1]] = 2;
   }
   sort(v.begin(), v.end());
}
bool isElementPresent(int val) {
   int ind = lower_bound(v.begin(), v.end(), val) - v.begin();
   if (v[ind] == val)
      return true;
   else {
      if (mpp[v[ind]] == 2)
         return true;
      else
         return false;
   }
}
int main(){
   int arr[][2] = {{2, 4}, {6,7}, {9, 12}};
   int n = 3;
   int Q = 3;
   int query[] = { 1, 7, 10 };
   initialiseMap(arr, n);
   for(int i = 0; i < Q; i++){
      cout<<"For Query "<<(i+1);
      if(isElementPresent(query[i]))
         cout<<": The given digit "<<query[i]<<" is present in one of the given ranges\n";
      else
         cout<<": The given digit "<<query[i]<<" is not present in any of the given ranges\n";
   }
   return 0;
}

आउटपुट

For Query 1: The given digit 1 is not present in any of the given ranges
For Query 2: The given digit 7 is present in one of the given ranges
For Query 3: The given digit 10 is present in one of the given ranges

  1. जांचें कि एक सर्कल दूसरे सर्कल के अंदर है या नहीं C++

    मान लीजिए कि हमारे पास दो सर्कल हैं (केंद्र बिंदु और त्रिज्या मान), हमें जांचना है कि एक सर्कल दूसरे सर्कल के अंदर फिट है या नहीं। तीन संभावित कारण हैं। छोटा वृत्त एक दूसरे को छुए बिना, पूरी तरह से बड़े के अंदर होता है। इस मामले में, केंद्रों और छोटी त्रिज्या के बीच की दूरी का योग एक बड़े त्रिज्य

  1. जांचें कि क्या कोई संख्या सी ++ में एक रहस्य संख्या है

    यहां हम देखेंगे कि कैसे चेक किया जाए कि कोई नंबर मिस्ट्री नंबर है या नहीं। एक रहस्य संख्या एक संख्या है जिसे दो संख्याओं के योग द्वारा दर्शाया जा सकता है, और संख्याएं एक दूसरे के विपरीत होती हैं। आइए बेहतर विचार प्राप्त करने के लिए कोड देखें। हमें सभी जोड़ियों की जांच करनी है और निर्णय लेना है। उदाह

  1. जाँच करें कि क्या दिया गया ग्राफ़ C++ का उपयोग करके DFS का उपयोग करते हुए द्विदलीय है

    एक द्विदलीय ग्राफ एक ग्राफ है जिसमें यदि केवल दो रंगों का उपयोग करके ग्राफ को रंगना संभव है; एक समुच्चय के शीर्षों को एक ही रंग से रंगा जाता है। यह एक C++ प्रोग्राम है जो यह जांचने के लिए है कि ग्राफ़ द्विदलीय है या नहीं DFS का उपयोग कर रहा है। एल्गोरिदम Begin    An array color[] is used t