Code: Select all
private int countRestarts(int [][] jobs, int modes1, int modes2)
{
boolean [] used1 = new boolean [modes1];
boolean [] used2 = new boolean [modes2];
used1[0] = used2[0] = true;
int count = countRestarts(jobs, 0, used1, used2);
return count;
}
private int countRestarts(int [][] jobs, int jobIndex, boolean [] used1, boolean [] used2)
{
if(jobIndex == jobs.length)
return 0;
else
{
//see if free job
int job1 = jobs[jobIndex][1];
int job2 = jobs[jobIndex][2];
if(used1[job1] || used2[job2])
return countRestarts(jobs, jobIndex + 1, used1, used2);
else
{
//try machine1
used1[job1] = true;
int result1 = 1 + countRestarts(jobs, jobIndex + 1, used1, used2);
used1[job1] = false;
//try machine2
used2[job2] = true;
int result2 = 1 + countRestarts(jobs, jobIndex + 1, used1, used2);
used2[job2] = false;
return Math.min(result1, result2);
}
}
}
Jason Winokur