Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- using namespace std;
- int totalActivity,counterPossible=1,choice;
- int startingTime[999999],finishingTime[999999],possibleActivity[999999];
- void input();
- void sortInput();
- void printPossibleActivity();
- void RecursiveActivitySelector(int*,int*,int,int);
- void GreedyActivitySelector(int*,int*);
- int main(void)
- {
- input();
- sortInput();
- //RecursiveActivitySelector(startingTime,finishingTime,1,totalActivity);
- //GreedyActivitySelector(startingTime,finishingTime);
- cout<<"Press 1 for Recursive 2 for Non recursive Activity Selector : ";
- cin>>choice;
- if(choice==1)
- {
- RecursiveActivitySelector(startingTime,finishingTime,1,totalActivity);
- }
- else if(choice==2)
- {
- GreedyActivitySelector(startingTime,finishingTime);
- }
- printPossibleActivity();
- return 0;
- }
- void input()
- {
- cout<<"Enter total number of activities : ";
- cin>>totalActivity;
- int i,j,k,start,finish;
- cout<<endl;
- for(i=1; i<=totalActivity; i++)
- {
- cout<<"Enter activity "<<i<<"'s starting and finishing time : ";
- cin>>start>>finish;
- startingTime[i]=start;
- finishingTime[i]=finish;
- }
- cout<<endl;
- }
- void sortInput()
- {
- int i,j,k,l,n=totalActivity,t,tmp;
- for(j = n; j>=2; j--)
- {
- t = 1;
- for(k = 2; k<=j; k++)
- {
- if(finishingTime[t]<finishingTime[k])
- {
- t = k;
- }
- tmp = finishingTime[j];
- finishingTime[j] = finishingTime[t];
- finishingTime[t] = tmp;
- tmp = startingTime[j];
- startingTime[j]=startingTime[t];
- startingTime[t]=tmp;
- }
- }
- }
- void printPossibleActivity()
- {
- int i;
- cout<<endl;
- cout<<"Possible activities : "<<endl;
- cout<<"Activity 1's starting time : "<<startingTime[1]<<" finishing time : "<<finishingTime[1]<<endl;
- for(i=1; possibleActivity[i]!='\0'; i++)
- {
- cout<<"Activity "<<possibleActivity[i]<<"'s starting time : "<<startingTime[possibleActivity[i]]<<" finishing time : "<<finishingTime[possibleActivity[i]]<<endl;
- }
- cout<<endl;
- }
- void RecursiveActivitySelector(int s[],int f[],int k,int n)
- {
- int m = k+1;
- while((m<=n)&&(startingTime[m]<finishingTime[k]))
- {
- m=m+1;
- }
- if(m<=n)
- {
- possibleActivity[counterPossible]=m;
- counterPossible++;
- RecursiveActivitySelector(s,f,m,n);
- }
- else
- {
- return;
- }
- }
- void GreedyActivitySelector(int s[],int f[])
- {
- int n = totalActivity;
- int m,k;
- k=1;
- for(m=2; m<=n; m++)
- {
- if(s[m]>f[k])
- {
- possibleActivity[counterPossible]=m;
- counterPossible++;
- k=m;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement