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

सी++ में गतिविधि चयन समस्या (लालची एल्गो-1)?

उनके शुरुआती समय और समाप्ति समय के साथ अलग-अलग गतिविधियां दी गई हैं। एक व्यक्ति द्वारा हल की जाने वाली गतिविधियों की अधिकतम संख्या चुनें।

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

  • जब सूची को क्रमबद्ध नहीं किया जाता है तो इस समस्या की जटिलता ओ (एन लॉग एन) होती है। जब क्रमबद्ध सूची प्रदान की जाती है तो जटिलता O(n) होगी।

इनपुट

प्रारंभ और समाप्ति समय के साथ विभिन्न गतिविधियों की सूची।

{(5,9), (1,2), (3,4), (0,6), (5,7), (8,9)}

आउटपुट

चयनित गतिविधियाँ हैं -

Activity: 0 , Start: 1 End: 2
Activity: 1 , Start: 3 End: 4
Activity: 3 , Start: 5 End: 7
Activity: 5 , Start: 8 End: 9

एल्गोरिदम

अधिकतमगतिविधि (कार्य, आकार)

इनपुट - गतिविधि की एक सूची, और सूची में तत्वों की संख्या।
आउटपुट - गतिविधियों का क्रम कैसे चुना गया है।

Begin
   initially sort the given activity List
   set i := 1
   display the i-th activity //in this case it is the first activity
   for j := 1 to n-1 do
      if start time of act[j] >= end of act[i] then
         display the jth activity
         i := j
   done
End

उदाहरण

#include<iostream>
#include<algorithm>
using namespace std;
   struct Activitiy {
      int start, end;
   };
   bool comp(Activitiy act1, Activitiy act2) {
      return (act1.end < act2.end);
   }
   void maxActivity(Activitiy act[], int n) {
   sort(act, act+n, comp); //sort activities using compare function
   cout << "Selected Activities are: " << endl;
   int i = 0;// first activity as 0 is selected
   cout << "Activity: " << i << " , Start: " <<act[i].start << " End: " << act[i].end <<endl;
   for (int j = 1; j < n; j++) { //for all other activities
      if (act[j].start >= act[i].end) { //when start time is >=end time, print the activity
         cout << "Activity: " << j << " , Start: " <<act[j].start << " End: " << act[j].end <<endl;
         i = j;
      }
   }
}
int main() {
   Activitiy actArr[] = {{5,9},{1,2},{3,4},{0,6},{5,7},{8,9}};
   int n = 6;
   maxActivity(actArr,n);
   return 0;
}

आउटपुट

Selected Activities are:
Activity: 0 , Start: 1 End: 2
Activity: 1 , Start: 3 End: 4
Activity: 3 , Start: 5 End: 7
Activity: 5 , Start: 8 End: 9

  1. एंड्रॉइड में अधिसूचना से एक गतिविधि शुरू करें?

    यह उदाहरण एंड्रॉइड में एक अधिसूचना से एक गतिविधि शुरू करने के बारे में प्रदर्शित करता है चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें। चरण

  1. C++ में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग कैसे शुरू करें?

    ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) ऑब्जेक्ट्स की अवधारणा पर आधारित एक प्रोग्रामिंग प्रतिमान है, जिसमें विशेषताओं के रूप में डेटा हो सकता है; और चीजों को करने के निर्देश, विधियों के रूप में। उदाहरण के लिए, एक व्यक्ति एक वस्तु है जिसमें कुछ गुण होते हैं जैसे कि ऊंचाई, लिंग, आयु, आदि। इसके कुछ तरीके

  1. गतिविधि चयन समस्या के लिए पायथन कार्यक्रम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन − हमें n गतिविधियां दी गई हैं जिनमें उनके संबंधित प्रारंभ और समाप्ति समय शामिल हैं। हमें उन गतिविधियों की अधिकतम संख्या का चयन करने की आवश्यकता है जो एक व्यक्ति द्वारा निष्पादित की जा सकती है, बशर्ते वह एक समय में एक गत