以下是回溯算法的经典框架结构:

 1 //t:递归的深度,也就是对象的层数。因此每次的回溯遍历都以深度为参数。
 2 void backtrack (int t)
 3 {
 4     if(t>n)                    //n:对象的总深度,或对象的总层数。
 5         output(x);            //x:解的容器,一般是个数组。
 6     else
 7     {
 8         /*f(t)和g(t)确定t层解的个数,或说第t个位置上解的可选个数。
 9         (1)0-1问题每层都有0和1两个解。(2)n皇后问题每层都有n个解。(3)排列
10         问题第t层有t到n个解。所以排列问题每层解的个数跟t有关。*/
11         for(int i=f(t);i<=g(t);i++)
12         {
13             x[t]=h(i);            //h(i):第t层的第i中解,x[t]:记录第t层的解。
14
15             /*constrain(t,i):判断当x[t]取h(i)时,是否有必要继续递归,
16             如:当前x记录的解,继续递归是否有可能比当前最优解更好,如0-1问题;
17             或h(i)是否是一个合法的,即符合规则的解,如n皇后问题;
18             bound(t,i):判断当x[t]取h(i)时,当前x记录的解是否已超过界限。如0-1问题。*/
19             if(constrain(t,i) && bound(t,i))
20                 backtrack(t+1);
21         }
22     }
23 }

转载于:https://www.cnblogs.com/kevinGaoblog/archive/2012/05/08/2490282.html

算法分析结课总结--回溯算法相关推荐

  1. 残缺棋盘问题算法分析_javascript使用递归回溯算法和贪心算法解决马踏棋盘问题...

    马踏棋盘算法介绍和游戏演示 1.马踏棋盘算法也被称为骑士周游问题 2.将马随机放在国际象棋的8×8棋盘Board[0-7][0-7]的某个方格中,马按走棋规则(马走日字)进行移动.要求每个方格只进入一 ...

  2. 【算法分析与设计】回溯算法解决七巧板着色问题

    文章目录 四色定理 七巧板 功能需求 程序设计 编程实现 四色定理 四色定理是一种关于地图着色的定理,指出任何平面地图都可以只用四种颜色进行着色,使得相邻的区域颜色不同. 简单来说,这个定理表明,如果 ...

  3. 回溯java算法_聊聊算法——回溯算法

    "递归只应天上有,迭代还须在人间",从这句话我们可以看出递归的精妙,确实厉害,递归是将问题规模逐渐减小, 然后再反推回去,但本质上是从最小的规模开始,直到目标值,思想就是数学归纳法 ...

  4. C++——《算法分析》实验叁——贪心算法与回溯法

    实验目的: 1.理解贪心算法与回溯法的概念: 2.掌握贪心算法与回溯法的基本要素: 3.掌握贪心算法与回溯法的解题步骤与算法柜架: 4.通过应用范例学习贪心算法与回溯法的设计技巧与策略: 实验原理 1 ...

  5. java背包算法回溯法_【算法分析】实验 4. 回溯法求解0-1背包等问题

    [TOC] 实验内容 本实验要求基于算法设计与分析的一般过程(即待求解问题的描述.算法设计.算法描述.算法正确性证明.算法分析.算法实现与测试),通过回溯法的在实际问题求解实践中,加深理解其基本原理和 ...

  6. 数据结构与算法分析 ——回溯算法之收费公路重建问题

    数据结构与算法分析第十章回溯算法之收费公路重建问题 一.  问题描述: 设给定N个点p1, p2,-,pn,它们位于x-轴上.xi是pi点的x坐标.这N个点确定了N(N-1)/2个点间距离.显然,如果 ...

  7. 《数据结构与算法分析》回溯算法之博弈——三连棋(tic tac toe)人机对战AI设计(αβ枝减)

    前言: 这次的回溯算法实在是太有意思了,不过刚刚接触的时候确实不容理解,极小极大策略,αβ枝减看了好几遍才明白整个过程.实现的时候又发现还有细节不明白,想明白之后对于整体的认识又加深了一步. 编码的过 ...

  8. 【回溯算法】旅行商问题--TSP问题

    [问题描述] 一销售商从n个城市中的某一城市出发,不重复地走完其余n-1个城市并回到原出发点,在所有可能的路径中求出路径长度最短的一条.本题假定该旅行商从第1个城市出发. 输入 对每个测试例,第1行有 ...

  9. 回溯算法 | 追忆那些年曾难倒我们的八皇后问题

    文章收录在公众号:bigsai 更多精彩干货敬请关注! 前言 说起八皇后问题,它是一道回溯算法类的经典问题,也可能是我们大部分人在上数据结构或者算法课上遇到过的最难的一道题-- 第一次遇到它的时候应该 ...

最新文章

  1. python opencv 灰度图非局部平均去噪
  2. asp.net数据格式的Format-- DataFormatString
  3. Git工具 - 子模块
  4. 1git命令的使用,查看git仓库状态,添加文件到git跟踪,git提交,查看git分支,查看git仓库日志信息,切换git分支,解决git分支合并后出现冲突的问题
  5. 通过调用API函数实现的无边框窗体的拖拽,比判断坐标更快捷
  6. 如何将iPhone应用程序从应用程序库移动到主屏幕
  7. Linux实现的IEEE 802.q VLAN
  8. 250php货币,FreeHostia免费PHP空间中文面板250MB空间6GB流量
  9. Linux下source命令
  10. python数据结构与算法13_python3数据结构与算法
  11. 鸿蒙系统的软件怎么下载,鸿蒙系统官网下载软件电脑版
  12. 2021中国山地自行车哪个品牌好全球十大顶级自行车品牌排行榜
  13. 1024,身为程序员的我们更应该思考如何放慢脚步
  14. java企业号开发教程_详解java微信企业号开发之开发模式的开启步骤
  15. win10应用闪退解决方法
  16. 2022年京东618店庆活动优惠力度怎么样?
  17. 零信任安全和软件定义边界
  18. 微信3.1.0.58逆向-微信3.1.0.58HOOK接口说明(WeChatHelper.dll)-获取当前聊天微信ID
  19. BJ模拟:医院(支配树)
  20. 骑行318、 2016.7.30

热门文章

  1. Java基础教程,第三讲,运算符 变量定义 数据类型转换
  2. 组件化 Todo List 编写笔记
  3. Visual studio 2010出现“error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏”解决方式...
  4. 5 个针对有经验用户的 Vim 实用技巧
  5. bzoj4396[Usaco2015 dec]High Card Wins*
  6. paip.元数据驱动的转换-读取文件行到个list理念 uapi java php python总结
  7. 使用JConsole监控ActiveMQ
  8. tcpdump基础教程
  9. Linux初级运维(七)——bash脚本编程(常见测试)
  10. 11g 新特性 Member Kill Escalation 简介