Advertisement
Rakibul_Ahasan

Activity selection problem (Greedy Alg.)

Dec 1st, 2019
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.55 KB | None | 0 0
  1. /// C++ program for activity selection problem.
  2. /// Prints a maximum set of activities that can be done by a single
  3. /// person, one at a time.
  4.  
  5. /// Activity selection problem টা এমন আমাকে অনেক গুলা কাজ দেওয়া আছে ।
  6. /// start time ও end time সহ । আমি একটা সময় শুধু মাত্র একটা কাজ এই করতে পারি ।
  7. ///    আমাকে যদি  N টা কাজ দেওয়া হয় তাহলে আমি সব চেয়ে বেশী  কয়টা কাজ করতে পারব ।
  8. ///   এইখানে overlapping possible না ,মানে একটা কাজ শেষ না করে কোন কাজ শুরু করতে পারব না ।
  9. ///  এই প্রবলেম এর solution টা অনেক সুন্দর । আমি কাজগুলাকে তাদের  end time এর বেসিস এ sort করব ।
  10. ///  এর পর আমি যে কাজটা সবার আগে আসবে তা করব । এমন এর পর এ সেই কাজটা শুরু করব যার start time
  11. /// এই কাজের end time এর থেকে বেশী ।
  12.  
  13. /// are already sorted according to their finish/end time
  14.  
  15. /// If this activity has start time greater than or
  16. /// equal to the finish time of previously selected
  17. /// activity, then select it
  18.  
  19. /// n --> Total number of activities
  20. /// s[] --> An array that contains start time of all activities
  21. /// f[] --> An array that contains finish time of all activities
  22.  
  23.  
  24. /// যদি end time ধরে সর্ট করে , আমি সবসময় সেই সব কাজ এই নিব যাদের end time অন্য কাজগুলা থেকে আগে   শেষ হচ্ছে
  25. ///  মানে আমি best option পাচ্ছি আরো বেশী কাজ স্টার্ট  করার ।
  26.  
  27. #include <bits/stdc++.h>
  28.  
  29. void solve(int s[], int f[], int n)
  30. {
  31.     int i, j;
  32.  
  33.     printf ("Best activities: ");
  34.  
  35.     i = 0;
  36.     std::cout<<i<<" ";
  37.  
  38.     for (j = 1; j < n; j++)
  39.     {
  40.         if (s[j] >= f[i])
  41.         {
  42.             std::cout<<j<<" ";
  43.             i = j;
  44.         }
  45.     }
  46.     std::cout<<"\n";
  47. }
  48.  
  49. int main()
  50. {
  51. ///            0  1  2  3  4  5
  52.     int s[] = {1, 3, 0, 5, 8, 5};
  53.     int f[] = {2, 4, 6, 7, 9, 9};
  54.  
  55.     int n = sizeof(s)/sizeof(s[0]);
  56.  
  57.     std :: sort(f,f+n);
  58.  
  59.     solve(s, f, n);
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement