回溯问题的解答关键和程序框架

      回溯问题是建立在递归的基础上的,并在解答树的基础上使用了DFS深度优先搜寻解答方案的策略,所以解答回溯问题的关键,在于寻找结束递归的边界条件,以及每一步测试当前方案是否符合题设条件。如果符合条件,进行递归向下,进行下一步的测试,否则继续试探,如果试探都结束,仍然找不到合理的解答,则推出现在所在的递归,及返回上一个递归栈帧,修改上一栈帧的值,重新测试,掌握回溯法,关键在于掌握试探的思想。


void dfs(int cur) //cur表示当前所在解答方案中的位置
  {
     if(cur==解答方案完成的最后一步)
	 {
		   从前到后完整输出临时数组解答方案;
	 }
	 else 
	 {
		 for(i 全部取值)  //使用遍历的思想,搜寻解答
		 {
			    
			   if(将i试探性的填入当前的解答方案,检查并不符合条件)
			   {
				     break;
			   }
			   else dfs(cur+1); //向下递归搜寻解答方案
		 }

	 }
  }


回溯问题的解答关键和程序框架

上一篇:node.js第五课(模块与包)


下一篇:jquery attr()方法