搜索与回溯综述

总的思路

计算机的优势在于它可以无脑的去尝试,所以它可以搜索尽所有的可能,然后选出合适的。但无脑的搜索在问题规模过大时也会非常耗费时间空间,所以我们要编写程序告诉计算机用一个更优的策略继续运行下去。

固定套路

总的来说,搜索与回溯是有固定模板套路的,即遵循
选择一个->探索下一步->回溯
写这样的程序时,我们只需要按这个模版去思考问题,先思考能够选择的范围,然后思考选择了这个之后产生了哪些变化,调用下一步,再看具体情况回溯即可。

框架一

int search(int k){
  for(i=1;i<=可选总数;i++)
     if(可选){
      选上并修改所有产生的变化
      if(到达目的地) 输出结果;
      else search(k+1);
      恢复:取消选上的结果,回退变化的值
    }
}

框架二

int search(int k){
  if(到目的地) 输出结果;
  else{
    for(i=1;i<=可选总数;i++)
     if(可选){
      选上并修改所有产生的变化
      search(k+1);
      恢复:取消选上的结果,回退变化的值
    }
}
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录 1.回溯算法1.1 回溯算法简介1.2 一般回溯方法 2.收费公路重建问题(通过考虑最大值策略,对可能性空间...
    王侦阅读 12,770评论 0 3
  • 明天就要到了,哈哈哈。期待。 不过早上很早,感谢舅舅送我。 真的很感谢家人对我的宠爱,以及支持我做的一些决定。 t...
    WoodSage阅读 331评论 1 1
  • “没关系,我会接住你的,我保证!”乔希的爸爸喊道。现在,这个七岁的小男孩后悔当初做出了信任他的决定。 这个身材瘦小...
    slyljs阅读 770评论 0 3
  • 自从饮食打卡以来,我的手艺渐入佳境,从给女儿做的“小雪人”、炸薯条、紫薯蛋卷到家常必备三明治、时令小炒,再到...
    卢梦令阅读 368评论 0 1
  • 话说,人,生来都是有奴性的,喜欢得过且过,看见“麻烦”来了,先是躲,后是拖,这是本能,本无可厚非,可是躲了初一躲不...
    谢爱梅阅读 220评论 0 1