摘要: http://poj.org/problem?id=1077今天看了A*搜索算法,听说牛逼的很,不过关键还是在于它的评估函数,估计也不一定每题都能这么容易想吧思路是在一个外国游戏网站上看到的,感觉百度到的也都一般http://theory.stanford.edu/~amitp/GameProgramming/就代码来说吧,s,存储所有所搜到的结点的信息,包括空格位置,深度及评估值,这里不给出h是因为h一直在变,b存储开始结点信息,visited存储是否访问到,接下来方向,答案,heap是为了提速而写的堆实现的优先队列,nali是为了区别出是否入队整个过程:1,开始结点初始化,入队列并判断是否 阅读全文
posted @ 2013-08-02 22:46 执着追求的IT小小鸟 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 因为写A*算法的需要,为了提高速度,顺手抄了个优先队列。。。。纯手搓优先队列是0个或多个元素的集合,每个元素都有一个优先权或值,对优先队列执行的操作有1) 查找;2) 插入一个新元素;3) 删除.在最小优先队列(min priorityq u e u e)中,查找操作用来搜索优先权最小的元素,删除操作用来删除该元素;对于最大优先队列(max priority queue),查找操作用来搜索优先权最大的元素,删除操作用来删除该元素.优先权队列中的元素可以有相同的优先权,查找与删除操作可根据任意优先权进行.我觉得关键在于:在堆排序的基础上,把建堆去掉就可以了,插入的时候插在叶子结点处,然后向上调整 阅读全文
posted @ 2013-08-02 22:11 执着追求的IT小小鸟 阅读(287) 评论(0) 推荐(0) 编辑