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再次未被触及,是否会导致重新访问?
答案 0 :(得分:2)
我不认为这是必要的。撤消你所做的事情通常是一种很好的做法,并在发现它们时保留原样。
例如,包含该行将允许您多次使用相同的功能进行搜索,而无需单独的操作来清除标记。