我研究了回溯算法以解决时间表问题,这看起来相当不错,但我想改进考虑所有可能性,以便能够为每一个得分并选择最佳解决方案。
是否有可能使用回溯算法来做这些事情?我找不到方法......; - (
也许有人可以帮助我?
这是我的代码:
private boolean solve(int row, int col) {
// No more row to check, Timetable is completed !!
if (row > (Params.ROW - 1)) {
return true;
}
// Check if the position as been assigned
if (timetable[row][col] != 0) {
// Already set from wishes, go next
return goNext(row, col);
} else {
// For all possible value
for (Integer value : Params.VALUES){
// Check constraint for the current value
if (checkConstraints(row, col, value)) {
// If valid, assign the value
timetable[row][col] = value;
// Then, go to the next position
if (goNext(row, col)) {
return true;
}
// Backtracking, reset the value
timetable[row][col] = 0;
}
}
return false;
}
}
此致 塞德里克