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

समय हटाने पर सरणी से अधिकतम निष्कासन>=C++ में प्रतीक्षा समय


इस समस्या में, हमें N तत्वों की एक सरणी दी गई है। हमारा कार्य समय निकालने के लिए सरणी से अधिकतम निष्कासन का पता लगाना है>=प्रतीक्षा समय।

तो, यहां हम सरणी के तत्वों को हटा देंगे। सरणी के तत्व का मान निष्कासन समय (सरणी से तत्व को निकालने में लगने वाला समय) दर्शाता है।

तत्व का एक प्रतीक्षा समय होता है जो वह समय होता है जब तक इसे हटा दिए जाने तक प्रतीक्षा करनी होगी।

तत्व को केवल तभी हटाया जा सकता है जब हटाने का समय उसके द्वारा प्रतीक्षा किए जाने वाले समय से अधिक हो।

हमें उन तत्वों की अधिकतम संख्या ज्ञात करनी है जिन्हें सरणी से हटाया जा सकता है। सरणी में तत्वों का क्रम आवश्यकता के अनुसार बदला जा सकता है।

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

इनपुट - सरणी ={12, 3, 11, 7, 5}

आउटपुट -2

स्पष्टीकरण -

सबसे पहले, हम सरणी को आरोही क्रम में पुन:व्यवस्थित करेंगे -

सरणी {3, 5, 7,11, 12}

. होगी

अब, हम एक-एक करके तत्वों को हटा देंगे

3 को निकाला जा रहा है - प्रतीक्षा समय 0 है जो हटाने के समय (3) से कम है। हटाना संभव है।

5 को निकाला जा रहा है - प्रतीक्षा समय 3 है जो हटाने के समय (5) से कम है। हटाना संभव है।

7 को निकाला जा रहा है - प्रतीक्षा समय 8 है जो हटाने के समय (7) से अधिक है। हटाना संभव नहीं है।

इस समस्या को हल करने के लिए, हम हटाए जाने वाले तत्वों को एक-एक करके छाँटेंगे और जाँचेंगे।

एल्गोरिदम

Step 1: Sort the array in ascending order.
Step 2: For every element in the array, Do:
Step 3: Find waiting Time (sum of removal time of all elements before the element).
Step 4: if (waiting time <= removal time )
   step 4.1: remove the element and increase the remove count.
Step 5: else: break.
Step 6: print the number of elements removed.

उदाहरण

हटाने का समय होने पर सरणी से अधिकतम निष्कासन खोजने का कार्यक्रम>=C++ में प्रतीक्षा समय

#include <bits/stdc++.h>
using namespace std;
int countRemovedElements(int arr[], int n){
   sort(arr, arr + n);
   int removeCount = 0;
   int waitTime = 0;
   for (int i = 0; i < n; i++) {
      if (arr[i] >= waitTime) {
         removeCount++;
         waitTime += arr[i];
      }
      else
         break;
   }
   return removeCount;
}
int main(){
   int arr[] = { 12, 3, 11, 7 , 5 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"The maximum number of elements that can be removed from the array is "<<countRemovedElements(arr, n);
   return 0;
}

आउटपुट

The maximum number of elements that can be removed from the array is 2

  1. सी ++ में वन बनाने के लिए पेड़ से अधिकतम किनारा हटाना

    समस्या कथन एक अप्रत्यक्ष पेड़ को देखते हुए, जिसमें सम संख्या में कोने होते हैं, हमें इस पेड़ से किनारों की अधिकतम संख्या को हटाने की आवश्यकता होती है, ताकि परिणामी जंगल के प्रत्येक जुड़े घटक में सम संख्या में कोने हों। उदाहरण ऊपर दिखाए गए पेड़ में, हम लाल रंग में दिखाए गए अधिकतम 2 किनारों 0-2 और

  1. C++ में किसी सरणी का अधिकतम औसत योग विभाजन

    समस्या कथन एक सरणी को देखते हुए, हम संख्या A की एक पंक्ति को अधिकतम K आसन्न (गैर-रिक्त) समूहों में विभाजित करते हैं, फिर स्कोर प्रत्येक समूह के औसत का योग होता है। अधिकतम स्कोर क्या हो सकता है? उदाहरण यदि इनपुट सरणी {9, 2, 5, 3, 10} है तो हम सरणी को इस प्रकार विभाजित कर सकते हैं - {9} {2, 5, 3} औ

  1. C++ में क्रम को समान रखते हुए दो दिए गए सरणियों से अधिकतम सरणी

    समस्या कथन दो समान आकार की सरणियाँ A [] और B [] दी गई हैं। कार्य समान आकार की तीसरी सरणी बनाना है। परिणाम सरणी में दोनों सरणी से अधिकतम n तत्व होने चाहिए। इसमें पहले ए [] के तत्वों को चुना जाना चाहिए, फिर बी [] के चुने हुए तत्वों को उसी क्रम में चुना जाना चाहिए जैसे वे मूल सरणी में दिखाई देते हैं।