Advertisement
rootUser

Activity selector (recursive and non recursive) (own)

Aug 10th, 2016
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.83 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4.  
  5. int totalActivity,counterPossible=1,choice;
  6. int startingTime[999999],finishingTime[999999],possibleActivity[999999];
  7.  
  8. void input();
  9. void sortInput();
  10. void printPossibleActivity();
  11. void RecursiveActivitySelector(int*,int*,int,int);
  12. void GreedyActivitySelector(int*,int*);
  13.  
  14. int main(void)
  15. {
  16.     input();
  17.     sortInput();
  18.     //RecursiveActivitySelector(startingTime,finishingTime,1,totalActivity);
  19.     //GreedyActivitySelector(startingTime,finishingTime);
  20.     cout<<"Press 1 for Recursive 2 for Non recursive Activity Selector : ";
  21.     cin>>choice;
  22.     if(choice==1)
  23.     {
  24.         RecursiveActivitySelector(startingTime,finishingTime,1,totalActivity);
  25.     }
  26.     else if(choice==2)
  27.     {
  28.         GreedyActivitySelector(startingTime,finishingTime);
  29.     }
  30.     printPossibleActivity();
  31.     return 0;
  32. }
  33.  
  34. void input()
  35. {
  36.     cout<<"Enter total number of activities : ";
  37.     cin>>totalActivity;
  38.     int i,j,k,start,finish;
  39.     cout<<endl;
  40.     for(i=1; i<=totalActivity; i++)
  41.     {
  42.         cout<<"Enter activity "<<i<<"'s starting and finishing time : ";
  43.         cin>>start>>finish;
  44.         startingTime[i]=start;
  45.         finishingTime[i]=finish;
  46.     }
  47.     cout<<endl;
  48. }
  49. void sortInput()
  50. {
  51.     int i,j,k,l,n=totalActivity,t,tmp;
  52.     for(j = n; j>=2; j--)
  53.     {
  54.         t = 1;
  55.         for(k = 2; k<=j; k++)
  56.         {
  57.             if(finishingTime[t]<finishingTime[k])
  58.             {
  59.                 t = k;
  60.             }
  61.             tmp = finishingTime[j];
  62.             finishingTime[j] = finishingTime[t];
  63.             finishingTime[t] = tmp;
  64.  
  65.             tmp = startingTime[j];
  66.             startingTime[j]=startingTime[t];
  67.             startingTime[t]=tmp;
  68.  
  69.         }
  70.     }
  71. }
  72.  
  73. void printPossibleActivity()
  74. {
  75.     int i;
  76.     cout<<endl;
  77.     cout<<"Possible activities : "<<endl;
  78.     cout<<"Activity 1's starting time : "<<startingTime[1]<<" finishing time : "<<finishingTime[1]<<endl;
  79.     for(i=1; possibleActivity[i]!='\0'; i++)
  80.     {
  81.         cout<<"Activity "<<possibleActivity[i]<<"'s starting time : "<<startingTime[possibleActivity[i]]<<" finishing time : "<<finishingTime[possibleActivity[i]]<<endl;
  82.     }
  83.     cout<<endl;
  84. }
  85.  
  86. void RecursiveActivitySelector(int s[],int f[],int k,int n)
  87. {
  88.     int m = k+1;
  89.     while((m<=n)&&(startingTime[m]<finishingTime[k]))
  90.     {
  91.         m=m+1;
  92.     }
  93.     if(m<=n)
  94.     {
  95.         possibleActivity[counterPossible]=m;
  96.         counterPossible++;
  97.         RecursiveActivitySelector(s,f,m,n);
  98.     }
  99.     else
  100.     {
  101.         return;
  102.     }
  103. }
  104.  
  105. void GreedyActivitySelector(int s[],int f[])
  106. {
  107.     int n = totalActivity;
  108.     int m,k;
  109.     k=1;
  110.     for(m=2; m<=n; m++)
  111.     {
  112.         if(s[m]>f[k])
  113.         {
  114.             possibleActivity[counterPossible]=m;
  115.             counterPossible++;
  116.             k=m;
  117.         }
  118.     }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement