2
boolean backtrackDFS(v)  {
   If  (SolutionFound(v))  return true;
   Mark vertex v as reached.
   for (each unreached vertex u adjacenct from v)
        if (backtrakDFS(u)) return true;
   Unmark vertex v; 
   return false;
}

这里为什么Unmark vertex v需要?为什么添加这样的行是安全的,因此 v 再次无法访问,会导致重新访问吗?

4

1 回答 1

3

我认为不需要。通常最好的做法是撤消所做的事情,让事情保持原样。

例如,包括该行将允许您多次使用相同的功能进行搜索,而无需单独的操作来清除标记。

于 2011-05-17T11:09:25.690 回答