Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
变进制HashIn Reply To:有哪位可以详细讲下这道题的HASH构造啊。。。 Posted by:cmxcn at 2010-05-24 18:36:07 首先介绍变进制概念: 所谓变进制,就是一个数字串的不同位置的进制不同。也就是说,和十进制或者二进制不同,变进制数并不是每逢一个常数(例如10或者2)进一,而可能在个位逢2进1,在十位逢6进一等等。 八数码状态一定是一个全排列数。而全排列数有一个非常完美的变进制Hash方法。 全排列变进制数表是{8!, 7!, 6!, 5!, 4!, 3!, 2!, 1!, 0!} (在这里最后一个0!实际上是用不着的) 下面来说明变进制数码的获得方法 对于一个全排列数的第i位,遍历第(j = i+1 ~ 9)位,统计逆序数(也就是a[i]>a[j]的情况),而这个逆序数恰恰就是第i个变进制数码。根据n进制hash的规则,只要将一个变进制数的每一位变进制数码(也就是之前求得的逆序数)乘以那一位所对应的进制数(从变进制数表中获得),累加即可。 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator