算法---经典算法
回溯算法中的经典问题,如八皇后问题
清水迎朝阳
多年windows下c++客户端开发,或多或少踩了很多坑,积累了一些经验
展开
-
回溯算法---八皇后问题
采用上节回溯算法的思想,解决八皇后问题,先看执行结果: 当NUM=4时,有两个解: 当 NUM=5时,有10个解: 当NUM=6时,有4个解: 当NUM为7时,有40个解: 当NUM为8时,有92个解: 当NUM为16时, 其中的一个解如下: 当NUM为30时,其中的一个解如下: 源原创 2012-06-29 17:26:11 · 2533 阅读 · 0 评论 -
回溯算法
1 什么是回溯法 回溯法实际是穷举算法,按问题某种变化趋势穷举下去,如某状态的变化用完还没有得到最优解,则返回上一种状态继续穷举。回溯法有“通用的解题法”之称,其采用了一种“走不通就掉头”思想作为其控制结构,用它可以求出问题的所有解和任意解。 它的应用很广泛,很多算法都用到回溯法,例如,迷宫,八皇后问题,图的m着色总是等都用到回溯法,当然其原创 2012-06-29 17:07:22 · 4805 阅读 · 2 评论 -
回溯算法---四色图着色
回溯算法基本思想: 判断第一个节点的各个候选值{ //当无未进行判断的候选者时,则退出 当将某候选值赋予第一个节点时,判断此时是否存在一个解路径。 若不存在,则继续判断下一个候选值。 } 具体算法思想如下: NUM : 解路径上节点的个数原创 2012-07-02 14:40:50 · 11455 阅读 · 0 评论 -
回溯算法---迷宫问题
节点定义:class CNode {public: CNode(); virtual ~CNode(); int i;//该方块的横坐标 int j;//方块的纵坐标; int passable;//该方块是不是通道; bool ifhavepass;//是否已经走过了该方块 bool operator==(CNode&p);原创 2012-08-02 14:45:23 · 1285 阅读 · 0 评论 -
回溯算法---01背包问题
背包问题: 给定n种物品(每种物品仅有一件)和一个背包。物品i的重量是wi ,其价值为pi ,背包的容量为w。问应如何选择物品装入背包,使得装入背包中的物品的总价值最大? l 如果在装入背包时,物品可以切割,即可以只装入一部分,这种情况下的问题称为背包问题。 l 在装入背包时,每种物品i只有两种选择,装入或者不装入原创 2012-07-20 15:02:36 · 21252 阅读 · 2 评论