class CourseGraph {
private int[][] adjacencyMatrix;
public CourseGraph(int numCourses) {
adjacencyMatrix = new int[numCourses][numCourses];
}
public void addConflict(int course1, int course2) {
adjacencyMatrix[course1][course2] = 1;
adjacencyMatrix[course2][course1] = 1;
}
}
]]>
public boolean scheduleCourses(int[] courses, int[][] conflicts, int[] timeSlots) {
return backtrack(courses, conflicts, timeSlots, 0);
}
private boolean backtrack(int[] courses, int[][] conflicts, int[] timeSlots, int index) {
if (index == courses.length) {
return true;
}
for (int slot : timeSlots) {
boolean canAssign = true;
for (int i = 0; i < courses.length; i++) {
if (conflicts[courses[index]][i] == 1 && timeSlots[i] == slot) {
canAssign = false;
break;
}
}
if (canAssign) {
timeSlots[courses[index]] = slot;
if (backtrack(courses, conflicts, timeSlots, index + 1)) {
return true;
}
timeSlots[courses[index]] = -1;
}
}
return false;
}
]]>
本站部分内容及素材来源于互联网,由AI智能生成,如有侵权或言论不当,联系必删!