Untitled

 avatar
user_0781376
plain_text
3 days ago
2.0 kB
9
Indexable
import java.util.Arrays;
import java.util.Comparator;

class Job {
    int id, deadline, profit;

    public Job(int id, int deadline, int profit) {
        this.id = id;
        this.deadline = deadline;
        this.profit = profit;
    }
}

public class Main {
    public static void jobSequencing(Job[] jobs) {
        // Step 1: Sort jobs by decreasing profit
        Arrays.sort(jobs, (a, b) -> b.profit - a.profit);

        // Step 2: Find the maximum deadline to determine the size of the schedule
        int maxDeadline = 0;
        for (Job job : jobs) {
            maxDeadline = Math.max(maxDeadline, job.deadline);
        }

        // Step 3: Create an array to store the scheduled jobs
        int[] schedule = new int[maxDeadline + 1];  // Slots for jobs (1-based index)
        Arrays.fill(schedule, -1);  // Mark all slots as free

        int totalProfit = 0;
        int jobCount = 0;

        // Step 4: Process each job and schedule it in the latest available slot before the deadline
        for (Job job : jobs) {
            for (int j = job.deadline; j > 0; j--) {
                if (schedule[j] == -1) { // If slot is available
                    schedule[j] = job.id;
                    totalProfit += job.profit;
                    jobCount++;
                    break;
                }
            }
        }

        // Step 5: Print results
        System.out.println("Scheduled Jobs:");
        for (int i = 1; i <= maxDeadline; i++) {
            if (schedule[i] != -1)
                System.out.print("J" + schedule[i] + " ");
        }
        System.out.println("\nTotal Profit: " + totalProfit);
    }

    public static void main(String[] args) {
        Job[] jobs = {
            new Job(1, 2, 100),
            new Job(2, 1, 50),
            new Job(3, 2, 10),
            new Job(4, 1, 20),
            new Job(5, 3, 30)
        };

        jobSequencing(jobs);
    }
}
Editor is loading...
Leave a Comment