public class JobSequencingProblem {
static class Job implements Comparable {
char id;
int deadline;
int profit;
@Override
public int compareTo(Job otherJob) {
return otherJob.profit - this.profit;
}
public Job(char id, int deadline, int profit) {
this.id = id;
this.deadline = deadline;
this.profit = profit;
}
}
public static void main(String[] args) {
JobSequencingProblem jobSequencing = new JobSequencingProblem();
ArrayList jobs = new ArrayList();
jobs.add(new Job('a', 2, 100));
jobs.add(new Job('b', 1, 19));
jobs.add(new Job('c', 2, 27));
jobs.add(new Job('d', 1, 25));
jobs.add(new Job('e', 3, 15));
Collections.sort(jobs);
for (Job job : jobs) {
System.out.println(job.id + " - " + job.profit);
}
jobSequencing.printJobSequence(jobs, jobs.size());
}
private void printJobSequence(ArrayList jobs, int size) {
Boolean[] slots = new Boolean[size];
Arrays.fill(slots, false);
int result[] = new int[size];
for (int i = 0; i <<size; i++) {
for (int j = jobs.get(i).deadline - 1; j >= 0; j--) {
if (!slots[j]) {
result[j] = i;
slots[j] = true;
break;
}
}
}
for (int i = 0; i < jobs.size(); i++) {
if (slots[i])
System.out.print(jobs.get(result[i]).id + " -> ");
}
}
}
static class Job implements Comparable
char id;
int deadline;
int profit;
@Override
public int compareTo(Job otherJob) {
return otherJob.profit - this.profit;
}
public Job(char id, int deadline, int profit) {
this.id = id;
this.deadline = deadline;
this.profit = profit;
}
}
public static void main(String[] args) {
JobSequencingProblem jobSequencing = new JobSequencingProblem();
ArrayList
jobs.add(new Job('a', 2, 100));
jobs.add(new Job('b', 1, 19));
jobs.add(new Job('c', 2, 27));
jobs.add(new Job('d', 1, 25));
jobs.add(new Job('e', 3, 15));
Collections.sort(jobs);
for (Job job : jobs) {
System.out.println(job.id + " - " + job.profit);
}
jobSequencing.printJobSequence(jobs, jobs.size());
}
private void printJobSequence(ArrayList
Boolean[] slots = new Boolean[size];
Arrays.fill(slots, false);
int result[] = new int[size];
for (int i = 0; i <<size; i++) {
for (int j = jobs.get(i).deadline - 1; j >= 0; j--) {
if (!slots[j]) {
result[j] = i;
slots[j] = true;
break;
}
}
}
for (int i = 0; i < jobs.size(); i++) {
if (slots[i])
System.out.print(jobs.get(result[i]).id + " -> ");
}
}
}
Comments
Post a Comment