回溯算法返回多个解

时间:2014-06-17 09:38:40

标签: algorithm recursion backtracking

我研究了回溯算法以解决时间表问题,这看起来相当不错,但我想改进考虑所有可能性,以便能够为每一个得分并选择最佳解决方案。

是否有可能使用回溯算法来做这些事情?我找不到方法......; - (

也许有人可以帮助我?

这是我的代码:

  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;
    }
  }

此致 塞德里克

0 个答案:

没有答案