摘要: 题意:#字形的图形,问将中间那一块转成相同数字需要的最少步数,输出字典序最小的路径。分析:跟hdu2234的无题I比,相对简单一点。其实也只是估价函数好理解一点,其他都差不多,还是迭代深搜+A*,也就是IDA*。估价函数h()=8-max(在要求的八个位置中,1,2,3,的个数);很好理解,因为没转动一步,最多只能将一个位置改为正确的。所以当前状态下,剩余的最少步数=8-max(在要求的八个位置中,1,2,3,的个数);#include<iostream>#include<algorithm>using namespace std;int map[8][8],step; 阅读全文
posted @ 2011-12-08 20:43 枕边梦 阅读(325) 评论(0) 推荐(0) 编辑
摘要: IDA*就是基于迭代深搜上的A*算法,最主要的就是在迭代深搜的过程中加了一个估价函数,关键还是这个估价函数的构造,ORZ,少了这个估价函数,对于这题目的话,直接TLE的说。这题目的估价函数是这样的,根据目前的地图简单的判断一下至少还要转多少次吧。这个估价函数“每次移动改变四个点的位置,即h()=(最少可能的横向或纵向不在位置上的点的个数+3)/4 )”,是参照大牛的。至于这么判断的,就要结合代码好好理解了……至于迭代加深,在之前的题目已经接触过了#include<iostream>#include<algorithm>using namespace std;int ma 阅读全文
posted @ 2011-12-08 19:20 枕边梦 阅读(398) 评论(0) 推荐(0) 编辑