摘要: 题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1242程序分析: 题意是说一个公主被困在监狱里了,她的一些朋友想要去救她,(注意是一些,也就是会有好几个朋友),在途中他们可能会遇到士兵守卫(守卫驻守在一个格子里),但是她的朋友很强大,可以保证把守卫都干掉,不过这得耗一个单位的时间,当然经过守卫这个格子同样也需要一个单位的时间(经过没有守卫的格子是需要一个单位的时间的);那么监狱并不是敞开的,总会有那么一些墙堵住,好,这些墙是过不去的,最后就是让你计算最快要多少个单位的时间可以跟公主碰面(默认碰面即是救到公主了);解决方法: 广搜可以找到到达.. 阅读全文
posted @ 2012-08-29 10:13 另Ⅰ中Feel▂ 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1180折腾了一下午,最后用优先队列做,这个应该也是UCS搜索吧。灵敏搜索!View Code 1 #include<iostream> 2 #include<queue> 3 #include <algorithm> 4 #include<string> 5 using namespace std; 6 7 const int Max = 25; 8 char s[Max][Max]; 9 int ax, ay, ex, ey, mx, my; 10 阅读全文
posted @ 2012-08-28 19:35 另Ⅰ中Feel▂ 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1728程序分析: 题目是要让你计算在一个迷宫里从一个点到另一个点要转的弯数是否小于给定的弯数限定。也就是判断能否在有限弯数内从一个点到达另一点。只能从四个方向走。输入数据有点与以往不同,注意输入的行跟列还有两个点的做坐标。解决方法: 迷宫之类的题大多数都能使用BFS或者DFS吧,不过这道题比较多陷阱和技巧,首先,每一种走法经过的弯可能是不同的,虽然都是经过同一个点,但是到达这个点时经过的弯路可能就不同了。应该有点DP的味道吧,BFS+DP可以算出来。这需要开多一个二维数组来保存这个点最小的转弯.. 阅读全文
posted @ 2012-08-28 12:40 另Ⅰ中Feel▂ 阅读(740) 评论(0) 推荐(0) 编辑
摘要: 题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1142程序分析: 题目意思是说一个人要从上班的地方回到家里,途中会经过一些地方,按下面规则问他回家会有几种路线:题目已经定义好1为上班地方2为家,每个地点之间的距离都已经知道,哪么如果从A到B的一条路,可以走的条件是B到2(家)的路程必须小于从A到2(家)的路程,其实就是A到家的最短路径必须大于B到家的最短路径。默认一定可以走到家,也就是一定会有一种路线。最后是让你计算有几种路线。解决方法: 因为有一个固定的起点,哪么就可以用dijkstra算法计算出每一个地点到家的最短路径,然后用DFS回溯.. 阅读全文
posted @ 2012-08-27 17:22 另Ⅰ中Feel▂ 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 八皇后问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。八皇后问题不是只用于这个有点无聊的数学问题上,不然就没什么研究意义了。在景观设计,道路布局,城市规划等方面有应用价值。比如布置景观时,要让N个景观互相不遮挡视线。方案一 暴力法最容易实现的,8层循环嵌套当然OK,但它的复杂度惊人,O(nn),n为行列数为了减少循环次数,针对该问题,最外层循环从第一列开始,向内层依次加1,最内层循环就从第八列开始了。方案二 回溯法八皇后问题是回溯法经典的例子回溯法基本的思想是采用递归,并且分 阅读全文
posted @ 2012-08-27 11:16 另Ⅰ中Feel▂ 阅读(2988) 评论(0) 推荐(0) 编辑
摘要: 所谓Informed Search,就是带有智慧决策的搜索,就像它的名字一样,它是informed,消息灵通的,它能根据最新情况而重新选择搜索。Informed Search也可以叫Heuristic Search,启发式搜索。正如上一篇提到的机器人、汽车导航、打魔兽,这些都是运用了Heuristic的搜索。何为Heuristic?Heuristic应该算一条引导你进入最佳选择的规则,它决定了状态空间中一个状态的质量,引导你每次都选择质量最好(或较好)的状态,一步步走向最佳方案。Heuristic就是一种度量,它通过一个估价函数来表示。f(n) = g(n) + h(n)其中h(n)就是heu 阅读全文
posted @ 2012-08-27 10:29 另Ⅰ中Feel▂ 阅读(1481) 评论(0) 推荐(0) 编辑
摘要: 图中的算法多的要命,大多数都是搜索算法吧,因为其应用实在太广了。就比如说机器人眼中的世界其实就是一张graph,graph的大小的有限的(这跟分配给它的memory有关),机器人就根据现有的graph信息边计算边决策,然后边走边获取新graph信息,再重新计算再决策再走……这是一个迭代过程,直到到达目的地为止,汽车导航仪也是类似的。我觉得这过程有点像你用一个英雄去打敌方老窝,在地图还不是完全可见的情况下,你得亲自控制着他,看好路,根据情况选择对应的战斗策略。……哈哈扯远了,这个其实算Informed Search了,也就是带有决策的启发式搜索了(我们将在下一篇中介绍)。我们先来介绍简单的Uni 阅读全文
posted @ 2012-08-27 09:31 另Ⅰ中Feel▂ 阅读(747) 评论(0) 推荐(1) 编辑
摘要: 题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1116程序分析: 词语接龙,问能不能全部接下去,其实就是欧拉图。解决方法: 用欧拉图的知识点来判断是否存在欧拉图。欧拉图: 通过图(无向图或有向图)中所有边一次且仅一次行遍图中所有顶点的通路称为欧拉通路,通过图中所有边一次且仅一次行遍所有顶点的回路称为欧拉回路。具有欧拉回路的图称为欧拉图(Euler Graph),具有欧拉通路而无欧拉回路的图称为半欧拉图。 1.无向连通图G是欧拉图,当且仅当G不含奇数度结点(G的所有结点度数为偶数); 2.无向连通图G含有欧拉通路,当且仅当G有零个或两个... 阅读全文
posted @ 2012-08-26 16:16 另Ⅰ中Feel▂ 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1325程序分析: 这道题跟小希的迷宫有很大的相似吧,只是一个是无向图一个是有向图。也是给你那些结点之间的信息,然后让你判断是不是一颗树罢了,用树的定义来判断吧,无环,n个结点最多有n-1条边,不然就会有环。只有一个入度为0的结点,不存在入度大于1的结点。这些也足以判断是否为一棵树了吧。不过要注意一些特殊数据的情况,空树也是树。比如输入0 0。解决方法: 其实也可以不用并查集,这样就可以直接按照上面的条件来统计,就可以判断是不是一颗树了。方法有多种,都知道最好,但是得精通,这些天都是在练并查集,.. 阅读全文
posted @ 2012-08-26 12:01 另Ⅰ中Feel▂ 阅读(835) 评论(0) 推荐(0) 编辑
摘要: 题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1856程序分析: 一个老板要完成一个项目,需要一些人来帮忙,越多越好,但是有个条件,这些人都应该彼此认识(直接跟间接),有个隐含的是如果没人可以帮忙,只好自己上阵,干活的就只有自己一个了。输入的是一对一对的朋友,他们都彼此认识。人数可以达到一千万(10000000)。解决方法: 并查集可以解决,都是把认识的挂同一棵树上,最后统计那棵树最多人,结果就是这棵树的人数了。由于n巨大,所以需要对输入的人编号进行标记(0/-1),还有统计输入的人里面编号最大的那个。只有在下面循环统计最大树时速度才能... 阅读全文
posted @ 2012-08-26 10:15 另Ⅰ中Feel▂ 阅读(215) 评论(0) 推荐(0) 编辑