摘要: 这个题目用一般的搜索无法完成,因为题目要求在指定的时间内完成,所以只好一步一步来啦,用DFS解决但是如果这样结果会超时,网上说是用一种奇偶剪枝的方法来间断搜索时间,下面是剪枝的简单理论,一看就懂: 把map看作 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 从 0->1 需要奇数步 从 0->0 需要偶数步 那么设所在位置 (x,y) 与 目标位置 (dx,dy) 如果abs(x-y)+abs(dx-dy)为偶数,则说明 abs(x-y) 和 abs(dx-dy)的奇偶性相同,需要走偶数步 如果abs(x-y 阅读全文
posted @ 2012-08-17 17:17 煮人为乐 阅读(2500) 评论(0) 推荐(0) 编辑
摘要: 第一次用递归搜索,感觉怪神奇的,就是记者标记指针和返回 就行啦View Code /* 功能Function Description: POJ-1979 开发环境Environment: vc6.0 技术特点Technique: 版本Version: 作者Author: jzjz 日期Date: 20120817 备注Notes: 迷宫搜索 */#include<stdio.h>#include<string.h>int... 阅读全文
posted @ 2012-08-17 11:34 煮人为乐 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 这个题网上有很多讲解,感觉在看这个题之前最好先去看看KMP ,不然看再多的讲解,可能也不能理解构造失败指针的意义是什么。在KMP中NEXT的作用是党不匹配时指针后移,而这个后移量则是通过 NEXT 来控制的,这个题里面 构造 失败指针的意义 和NEXT的作用一样,就是前后移动指针的。这个懂了,再看看别人的图示,就会明白构造的过程,其中 我理解的是用 广度优先 遍历的。大家可以看看这个文章http://www.cppblog.com/mythit/archive/2009/04/21/80633.html里面讲解的很详细。代码:#include<stdio.h>#include< 阅读全文
posted @ 2012-08-17 10:20 煮人为乐 阅读(826) 评论(0) 推荐(0) 编辑