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

C++ में दिए गए आगमन और प्रस्थान समय के साथ k बुकिंग संभव है या नहीं, इसका पता लगाएं

इस समस्या में, हमें दो सरणियाँ दी जाती हैं जिनमें N मान होते हैं जो होटल में आगमन और प्रस्थान और एक पूर्णांक k को दर्शाते हैं। हमारा काम यह पता लगाना है कि दिए गए आगमन और प्रस्थान समय के साथ k बुकिंग संभव है या नहीं।

समस्या का विवरण: यहां, हमें यह जांचना होगा कि k कमरों वाला होटल सभी आगमन और प्रस्थान को समायोजित करने में सक्षम है या नहीं।

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

इनपुट: आगमन :{1 4 5 7}

प्रस्थान :{3 5 6 9}
के =1

आउटपुट: हाँ

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

समस्या को हल करने के लिए, हम होटल के आगमन और प्रस्थान को एक सहायक सरणी में एक लेबल के साथ संग्रहीत करेंगे जो आगमन या प्रस्थान के लिए है। फिर इस सरणी को क्रमबद्ध करें और होटल के लिए सक्रिय बुकिंग की संख्या गिनें।

यदि आगमन हो तो गिनें++
यदि प्रस्थान हो, तो गिनें--.

यदि किसी भी समय बुकिंग k से अधिक है, तो गलत, . लौटाएं अन्य सत्य लौटाएं।

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,

उदाहरण

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

bool isBookingValid(int arrival[], int departure[], int n, int k){
   
   vector<pair<int, int> > auxArray;
   int activeBookings = 0, maxBookings = 0;

   for (int i = 0; i < n; i++) {
      auxArray.push_back(make_pair(arrival[i], 1));
      auxArray.push_back(make_pair(departure[i], 0));
   }
   sort(auxArray.begin(), auxArray.end());

   for (int i = 0; i < auxArray.size(); i++) {

      if (auxArray[i].second == 1) {
         activeBookings++;
         maxBookings = max(maxBookings, activeBookings);
         
      }
      else
         activeBookings--;
   }  
   return (k >= maxBookings);
}

int main(){
   
   int arrival[] = { 1, 4, 5, 7 };
   int departure[] = { 3, 5, 6, 9 };
   int k = 1;
   int n = sizeof(arrival) / sizeof(arrival[0]);
   
   if(isBookingValid(arrival,departure, n, k))
      cout<<"All booking are possible";
   else
      cout<<"Booking not possible";
     
   return 0;
}

आउटपुट

All booking are possible

एक और तरीका:

हम सहायक सरणी के उपयोग को समाप्त कर सकते हैं। हम प्रस्थान और आगमन के लिए दिए गए दो सरणियों का उपयोग करके होटल की बुकिंग की जांच कर सकते हैं।

फिर अतिव्यापी जाँच करें और यदि यह k से अधिक है, तो झूठी वापसी करें। अन्यथा सही लौटें।

चूंकि, k कमरे हैं, एक आसान तरीका k th . की जाँच करना होगा आगमन, और जांचें कि क्या यह सीमा में आता है।

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,

उदाहरण

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

bool isBookingPossible(int arrival[], int departure[], int K, int N){
   
   sort(arrival, arrival + N);
   sort(departure, departure + N);
   
   for(int i = 0; i < N; i++)
   {
      if (i + K < N && arrival[i + K] < departure[i])
      {
         return false;
      }
   }
   return true;
}

int main(){
   
   int arrival[] = { 1, 2, 3 };
   int departure[] = { 2, 3, 4 };
   int N = sizeof(arrival) / sizeof(arrival[0]);
   int K = 1;
   if(isBookingPossible(arrival, departure, K, N))
      cout<<"All booking are possible";
   else
      cout<<"Booking not possible";
   return 0;
}

आउटपुट

All booking are possible

  1. C++ में दिए गए अंतर के साथ एक जोड़ी खोजें

    विचार करें कि हमारे पास एक सरणी A है, n विभिन्न तत्व हैं। हमें सरणी A से एक युग्म (x, y) ज्ञात करना है, ताकि x और y के बीच का अंतर दिए गए अंतर d के समान हो। मान लीजिए कि तत्वों की एक सूची A =[10, 15, 26, 30, 40, 70] की तरह है, और दिया गया अंतर 30 है, तो जोड़ी होगी (10, 40) और (30, 70) इस समस्या को

  1. C++ में दिए गए सूचकांकों के साथ N फाइबोनैचि संख्याओं की GCD ज्ञात कीजिए

    यहाँ हमें दिए गए सूचकांकों के साथ n फाइबोनैचि पदों की GCD ज्ञात करनी है। तो सबसे पहले हमें अधिकतम सूचकांक प्राप्त करना होगा, और फाइबोनैचि शब्द उत्पन्न करना होगा, कुछ फाइबोनैचि शब्द इस प्रकार हैं:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ….. सूचकांक शुरू होता है 0 से। तो तत्व 0th . पर सूचकांक 0 है। यदि हमें स

  1. C++ में दिए गए GCD और LCM के साथ कोई भी युग्म ज्ञात कीजिए

    इस खंड में हम देखेंगे कि दिए गए GCD और LCM मानों का उपयोग करके जोड़े की संख्या कैसे प्राप्त करें। मान लीजिए कि GCD और LCM मान 2 और 12 हैं। अब संख्याओं के संभावित जोड़े (2, 12), (4, 6), (6, 4) और (12, 2) हैं। तो हमारा प्रोग्राम जोड़ियों की गिनती का पता लगाएगा। वह 4 है। इस समस्या को हल करने की तकनीक