1:hdu1026 Ignatius and the Princess I
http://acm.hdu.edu.cn/showproblem.php?pid=1026
求从点(0,0)到(n-1, m-1)所花费的最小时间,其中.为通路,x为障碍物,n表示打怪所需要的时间。我们用优先队列处理来扩展节点。先到达终点所需要的时间为最少。没有什么其他不同,只是平时用队列扩展改为优先队列或最小堆即可。还有就是打印路径,我们队每个点记录其父节点,然后递归输出路径即可(但其中需要注意的是由于要输出每一秒都在做什么事,对于打怪时,我们可以采用递归n次来指向其本身递归n次的小技巧,或者直接定义一个全局变量,递归到最底层时我们不断的累加器需要的时间。)
具体代码:http://blog.csdn.net/robotcator/article/details/22419421
仅供参考,各位acmer fighting
2:hdu1175 连连看
http://acm.hdu.edu.cn/showproblem.php?pid=1175
一直往一个方向且限制拐弯次数,我们只需用一个结构体记录节点及其拐弯次数即可,此题去年暑假就做了,一直做不出来,所以对搜索都很后怕,但是这次静下心来写了一次。好不容易过了。我很渣,我更能体会作为一名弱渣要成功是比较困难的事,但是我们也不能放弃,努力就会有成果。即使不能进regional又怎样,我还是要刷题,提高能力。
具体代码:http://blog.csdn.net/robotcator/article/details/22421561
3:hdu1548 a strange lift
http://acm.hdu.edu.cn/showproblem.php?pid=1548
简单bfs,只要上和下两个方向。
4:poj 1915 Knight Moves
这个要说一下,第一个双向bfs。题目为按象棋中马步的方式从起点到终点的最短路。双向bfs跟普通的bfs没什么两样,只不过双向bfs是分别逐层从起点和终点扩展(注意要逐层扩展) 当正向扩展出来的节点在逆向已扩展(或者逆向扩展的节点在正向已扩展)那么则停止扩展,已求的最短路。(简单吧,耐心点很好理解的)
具体代码:http://blog.csdn.net/robotcator/article/details/22423759
5:hdu 1195 Open the lock http://acm.hdu.edu.cn/showproblem.php?pid=1195
简单bfs,只是操作很多,操作比较复杂,不过可以复制粘贴。还有判重有两个方法,一个是用四维vis数组,另一个是hash成整数,用vis记录不要重复入队。
具体代码:http://blog.csdn.net/robotcator/article/details/24239083