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

C++ प्रोग्राम यह पता लगाने के लिए कि एक फिल्म महोत्सव में एक उपस्थित व्यक्ति पूरी तरह से कितनी फिल्में देख सकता है

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

एक स्ट्रक्चर Movie है जिसमें निम्नलिखित सदस्य हैं:

  • फिल्म का प्रारंभ समय।
  • फिल्म की अवधि।
  • फिल्म का समाप्ति समय।

एक और स्ट्रक्चर Festival है जिसमें निम्नलिखित सदस्य हैं:

  • महोत्सव में फिल्मों की संख्या।
  • Movie प्रकार की एक सरणी जिसका आकार महोत्सव में फिल्मों की संख्या के समान है।

हमें दो सरणियों 'timeBegin' और 'duration' के साथ एक Festival ऑब्जेक्ट बनाना और इनिशियलाइज़ करना है जिनमें क्रमशः कई फिल्मों का प्रारंभ समय और अवधि है। एक पूर्णांक n फिल्मों की कुल संख्या को दर्शाता है और इसका उपयोग ऑब्जेक्ट को इनिशियलाइज़ करने के लिए भी किया जाता है। हम आगे उस ऑब्जेक्ट का उपयोग यह गणना करने के लिए करते हैं कि एक उपस्थित व्यक्ति पूरी तरह से कितनी फिल्में देख सकता है।

तो, यदि इनपुट timeBegin = {1, 3, 0, 5, 5, 8, 8}, duration = {3, 2, 2, 4, 3, 2, 3}, n = 7 है, तो आउटपुट 4 होगा।

उपस्थित व्यक्ति उस महोत्सव में पूरी तरह से कुल 4 फिल्में देख सकता है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:

  • struct Movie {
    • तीन सदस्य वेरिएबल्स timeBegin, duration, timeEnd परिभाषित करें
    • एक ऑपरेटर '<' को ओवरलोड करें, यह Movie प्रकार का एक वेरिएबल another लेगा।
      • timeEnd < another.timeEnd लौटाएं
  • struct Festival {
    • एक सदस्य count परिभाषित करें
    • Movie प्रकार की वस्तुओं वाली एक सरणी movies परिभाषित करें
  • एक फंक्शन initialize() परिभाषित करें। यह सरणियों timeBegin और timeEnd और एक पूर्णांक n लेगा।
    • filmFestival := एक नया Festival ऑब्जेक्ट
    • filmFestival का count := count
    • i := 0 से प्रारंभ करें, जब i < count, अपडेट करें (i को 1 से बढ़ाएं), करें:
      • temp := Movie प्रकार का एक नया ऑब्जेक्ट
      • temp का timeBegin := timeBegin[i]
      • temp का duration := duration[i]
      • temp का timeEnd := timeBegin[i] + duration[i]
      • temp को filmFestival की movies सरणी में डालें
    • filmFestival लौटाएं
  • एक फंक्शन solve() परिभाषित करें, यह fest प्रकार का एक वेरिएबल लेगा जो Festival प्रकार का है,
    • res := 0
    • fest की movies सरणी को क्रमबद्ध करें
    • timeEnd := -1
    • i := 0 से प्रारंभ करें, जब i < fest->count, अपडेट करें (i को 1 से बढ़ाएं), करें:
      • यदि fest की movies[i] का timeBegin >= timeEnd, तो:
        • (res को 1 से बढ़ाएं)
        • timeEnd := fest की movies[i] का timeEnd
    • res लौटाएं

उदाहरण

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

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

struct Movie {
    int timeBegin, duration, timeEnd;
    bool operator<(const Movie& another) const {
        return timeEnd < another.timeEnd;
    }
};

struct Festival {
    int count;
    vector<Movie> movies;
};

Festival* initialize(int timeBegin[], int duration[], int count) {
    Festival* filmFestival = new Festival;
    filmFestival->count = count;
    for (int i = 0; i < count; i++) {
        Movie temp;
        temp.timeBegin = timeBegin[i];
        temp.duration = duration[i];
        temp.timeEnd = timeBegin[i] + duration[i];
        filmFestival->movies.push_back(temp);
    }
    return filmFestival;
}

int solve(Festival* fest) {
    int res = 0;
    sort(fest->movies.begin(), fest->movies.end());
    int timeEnd = -1;
    for (int i = 0; i < fest->count; i++) {
        if (fest->movies[i].timeBegin >= timeEnd) {
            res++;
            timeEnd = fest->movies[i].timeEnd;
        }
    }
    return res;
}

int main(int argc, char *argv[]) {
    int timeBegin[] = {1, 3, 0, 5, 5, 8, 8};
    int duration[] = {3, 2, 2, 4, 3, 2, 3};
    Festival * fest;
    fest = initialize(timeBegin, duration, 7);
    cout << solve(fest) << endl;
    return 0;
}

इनपुट

int timeBegin[] = {1, 3, 0, 5, 5, 8, 8};
int duration[] = {3, 2, 2, 4, 3, 2, 3};
Festival * fest;
fest = initialize(timeBegin, duration, 7);

आउटपुट

4
  1. Python में गोदाम में कितने बॉक्स रखे जा सकते हैं, इसका प्रोग्राम Python में गोदाम में कितने बॉक्स रखे जा सकते हैं, इसका प्रोग्राम

    मान लीजिए, हमारे पास दो सरणियाँ हैं जिनमें पूर्णांक हैं। एक सूची में कुछ यूनिट चौड़ाई वाले बॉक्स की ऊंचाई है और दूसरी सरणी में गोदाम में कमरों की ऊंचाई है। कमरे 0...n से नंबर किए गए हैं, और कमरों की ऊंचाई सरणी godown में उनके संबंधित इंडेक्स पर दी गई है। हमें उन बॉक्स की संख्या पता करनी है जिन्हें ग

  1. Python में कितने क्यूब कटे हैं, यह खोजने का प्रोग्राम Python में कितने क्यूब कटे हैं, यह खोजने का प्रोग्राम

    मान लीजिए, a, b, और c आयामों के कई क्यूब्स हैं, और उनका उपयोग करके axbxc आयाम का एक नया बॉक्स बनाया जाता है। a, b, और c pairwise को-प्राइम हैं; gcd(a, b) = gcd(b,c) = gcd(c, a) = 1। हमें एक सिंगल स्लाइस के साथ बॉक्स को दो टुकड़ों में काटना है जैसा कि चित्र में दिखाया गया है। हमें यह पता करना है कि य

  1. - पायथन में सीढ़ियां चढ़ने के तरीकों की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास n चरणों वाली एक सीढ़ी है, और हम एक बार में 1 या 2 चरण चढ़ सकते हैं। हमें एक फ़ंक्शन परिभाषित करना है जो सीढ़ी चढ़ने के अद्वितीय तरीकों की संख्या लौटाता है। चरणों का क्रम नहीं बदला जाना चाहिए, इसलिए चरणों का प्रत्येक अलग क्रम एक तरीका गिना जाता है। यदि उत्तर बहुत बड़ा है तो परिणा