Activity Selection Java
- Get link
- X
- Other Apps
PROGRAM TO SOLVE ACTIVITY SELECTION PROBLEM
import java.io.*;import java.util.*;// A job has a start time, finish time and profit.class Activity{ int start, finish; // Constructor public Activity(int start, int finish) { this.start = start; this.finish = finish; }}// class to define user defined comparatorclass Compare{ // A utility function that is used for sorting // activities according to finish time static void compare(Activity arr[], int n) { Arrays.sort(arr, new Comparator<Activity>() { @Override public int compare(Activity s1, Activity s2) { return s1.finish - s2.finish; } }); }}// Driver classclass GFG { // Returns count of the maximum set of activities that // can // be done by a single person, one at a time. static void printMaxActivities(Activity arr[], int n) { // Sort jobs according to finish time Compare obj = new Compare(); obj.compare(arr, n); System.out.println( "Following activities are selected :"); // The first activity always gets selected int i = 0; System.out.print("(" + arr[i].start + ", " + arr[i].finish + "), "); // Consider rest of the activities for (int j = 1; j < n; j++) { // If this activity has start time greater than // or equal to the finish time of previously // selected activity, then select it if (arr[j].start >= arr[i].finish) { System.out.print("(" + arr[j].start + ", " + arr[j].finish + "), "); i = j; } } } // Driver code public static void main(String[] args) { int n = 6; Activity arr[] = new Activity[n]; arr[0] = new Activity(5, 9); arr[1] = new Activity(1, 2); arr[2] = new Activity(3, 4); arr[3] = new Activity(0, 6); arr[4] = new Activity(5, 7); arr[5] = new Activity(8, 9); printMaxActivities(arr, n); }}
OUTPUT:
Following activities are selected (1, 2), (3, 4), (5, 7), (8, 9)
- Get link
- X
- Other Apps
Comments
Post a Comment