C语言问题(不要C++) 回溯和深搜不是太明白,希望可以用尽量简单的方法来详细有条理地解释一下,最

C语言问题(不要C++)
回溯和深搜不是太明白,希望可以用尽量简单的方法来详细有条理地解释一下,最好可以附上几个经典案例和C语言代码解决方案。

第1个回答  推荐于2017-11-21
本质上是一样的。
个人对回溯有两种理解。
第一种理解:回溯就是以非递归实现的深搜,这样的话,回溯就属于深搜。
第二种理解:回溯过程,是深搜过程中的一个子过程。
例如:
void Dfs(int t)
{
……
if (Ok()) //可行性判断
{
Change_togo(); //搜索前的标记及修改
Dfs(i+1); //深搜下一层
Change_back(); //将标记和修改的值还原
}
}
在这个深搜过程中,Change_back()这个还原的子过程,就可以称为回溯过程。
一般的深搜都带回溯,但是没有回溯的深搜都是好深搜(一次就做完了,复杂度大大的低)本回答被提问者和网友采纳
相似回答