首页 > 其他 > 详细

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

时间:2014-02-02 19:12:58      阅读:455      评论:0      收藏:0      [点我收藏+]

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


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

	 }
  }


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

原文:http://blog.csdn.net/rually/article/details/18895757

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!