• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
kter
博客园 首页 新随笔 联系 订阅 订阅 管理

2012年11月27日

八数码问题中的hash函数
摘要: 最近做题时又遇到了八数码问题(见POJ1077),记得高中搞OI时也做过这道题,AC的时候内牛满面。其实这道题用朴素的广搜即可AC,只不过记录各个状态比较麻烦,如果把字符串当成一个列数直接存储的话需要10e9个数,这样显然是会爆内存的。所以很容易想到建立hash表把每个状态一一映射,这样只有9!个状态,关键问题在于hash函数的构造。当初做这题的时候是借鉴了别人的hash函数,也没怎么懂原理,仿造着写上去调了一下午也AC了。其实像这种全排列的问题有一种特殊的hash函数,即康托展开。 举个例子,{1,2,3,4,...,n}表示1,2,3,...,n的排列如 {1,2,3} 按从小到大排... 阅读全文
posted @ 2012-11-27 16:26 kter 阅读(229) 评论(0) 推荐(0)
 
八数码问题中的hash函数
摘要: 最近做题时又遇到了八数码问题(见POJ1077),记得高中搞OI时也做过这道题,AC的时候内牛满面。其实这道题用朴素的广搜即可AC,只不过记录各个状态比较麻烦,如果把字符串当成一个列数直接存储的话需要10e9个数,这样显然是会爆内存的。所以很容易想到建立hash表把每个状态一一映射,这样只有9!个状态,关键问题在于hash函数的构造。当初做这题的时候是借鉴了别人的hash函数,也没怎么懂原理,仿造着写上去调了一下午也AC了。其实像这种全排列的问题有一种特殊的hash函数,即康托展开。 举个例子,{1,2,3,4,...,n}表示1,2,3,...,n的排列如 {1,2,3} 按从小到大排... 阅读全文
posted @ 2012-11-27 16:22 kter 阅读(308) 评论(0) 推荐(0)
 
 

公告


博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3