【迷宫问题】
【算法1---堆栈回溯】
计算机解迷宫时,通常用的是"试探和回溯"的方法,即从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止,如果所有可能的通路都试探过,还是不能走到终点,那就说明该迷宫不存在从起点到终点的通道。
1.从入口进入迷宫之后,不管在迷宫的哪一个位置上,都是先往东走,如果走得通...
分类:
其他好文 时间:
2014-05-22 13:25:23
阅读次数:
283
堡垒问题是在学习递归回溯时的一个经典问题,在递归求解此类问题时,总是先判断当前状态是否行,如果可行,则试着放置一个问题的解,继续递归搜索。递归结束后之后要将状态改变回来,因为前提只是假设先放置着问题的解,之后肯定要修改回来才能保证问题解的正确性。如果忘记修改状态回来,程序肯定会出错。在搜索时,注.....
分类:
其他好文 时间:
2014-05-21 19:44:03
阅读次数:
429
装载问题同样也是递归回溯法的一个简单应用,用子集树表示解空间显然是最合适的。在递归回溯时,可以进行相应的剪枝。问题的解要满足两个条件:1.首先将第一艘轮船尽可能装满2.将剩余的集装箱装上第二艘轮船由此可知,只要求出不超过第一艘轮船载重量c1的最大值,若总重量-c1#include#include#i...
分类:
其他好文 时间:
2014-05-21 19:20:24
阅读次数:
296
题目连接:uva 1362 - Exploring Pyramids
题目大意:给出一个字符串,问有多少种多叉树德前序遍历(这里每经过一个节点,该节点的值即要被算入,回溯的也要)满足该字符串。
解题思路:dp[i][j]表示从i到j的位置可以用多少种多叉树表示。转移方程:dp[i][j]=∑k=i+2jdp[i+1][k?1]?dp[k][j]。
#include
#include...
分类:
其他好文 时间:
2014-05-20 15:32:08
阅读次数:
254
问题描述:
在n*n的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在n*n格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线。盲目的迭代枚举:
1 /* 2 *作者:xymaqingxiang 3 *...
分类:
其他好文 时间:
2014-05-19 07:54:34
阅读次数:
312
迷宫规模较大,DFS必然超时。注意到行走方向只有上、下、右三个,意味着已走过的路不能再走,更意味着不用回溯。且问题问的是最大值。一切都清晰地指向了DP!...
分类:
其他好文 时间:
2014-05-18 15:16:29
阅读次数:
328
??
主流算法:
1.搜索 //回溯
2.DP(动态规划)
3.贪心
4.图论 //Dijkstra、最小生成树、网络流
5.数论 //解模线性方程
6.计算几何 //凸壳、同等安置矩形的并的面积与周长
7.组合数学 //Polya
定理
8.模拟
9.数据结构 //并查集、堆
10.博弈论
...
分类:
其他好文 时间:
2014-05-18 07:25:00
阅读次数:
316
一看题目 经典的8皇后问题 不过是皇后数量可变而已 不用想 回溯法。 需要个生成每次可选择序列的函数,
在存储可选择的序列时按照先大后小的顺序排的。这样每次找最小和去掉最小都很方便,只要有个记录数量的变量 每次减1就好了。 写完后,居然悲剧了。
在皇后数量达到13时, 在自己电脑上跑 内存溢出了 在...
分类:
其他好文 时间:
2014-05-16 00:04:46
阅读次数:
444
问题描述: 给定n个作业的集合J=(J1,J2,...
,Jn)。每一个作业Ji都有两项任务分别在2台机器上完成。每个作业必须先有机器1处理,然后再由机器2处理。作业Ji需要机器j的处理时间为tji。对于一个确定的作业调度,设Fji是作业i在机器j上完成处理时间。则所有作业在机器2上完成处理时间和....
分类:
其他好文 时间:
2014-05-15 21:41:22
阅读次数:
487