摘要: 经典的八数码问题,有人说不做此题人生不完整,哈哈。状态总数是9! = 362880 种,不算太多,可以满足广搜和A*对于空间的需求。状态可以每次都动态生成,也可以生成一次存储起来,我用的动态生成,《组合数学》书上有一种生成排列的方法叫做"序数法",我看了一会书,把由排列到序数,和由序数到排列的两个函数写了出来,就是代码中的int order(const char *s, int n) 和void get_node(int num, node &tmp)两个函数。启发函数,用的是除空格外的八个数字到正确位置的网格距离。几种方法的比较:广搜,效率最低,500ms;A*, 阅读全文
posted @ 2012-08-03 17:02 痴人指路 阅读(206) 评论(0) 推荐(0) 编辑