读书人

实现8数码解决中的一个疑惑.解决思路

发布时间: 2012-03-20 14:01:10 作者: rapoo

实现8数码解决中的一个疑惑............
八数码搜索过程中的节点中都存储有一个目前的矩阵状态,我这里用一个一维数组存储这个矩阵.

1 3 5
7 0 8
2 4 6 存储成 int arr[8]={1,3,5,7,0,8,2,4,6} 0表示空格.

为了区分节点(封闭,开放,未访问) 这三个状态, 并且如果节点开放,能够直接获取节点指针的目的. 考虑用哈希表在O(1)时间根据节点中int arr[8]的信息,去哈希表里查询节点状态会很方便.


现在找一个函数可以将每种序列唯一对应到哈希表中.

请拿我说的这个矩阵为例说明一下,谢谢....


还有,STL中map如何做到不同关键词独有一个位置,是通过什么方式对应的..

[解决办法]
自己写Hash效果可能会更好,总共状态不超过9!个,开一个30多万长的bool数组就可以了!
[解决办法]
当做字符串处理行吗
[解决办法]
可以看看这个帖子,是算某个排列是第几个的,本题的情况由于需要计算多次,可以通过预处理,降低复杂度

http://topic.csdn.net/u/20091129/21/837550ef-12d1-4859-aa8d-ed27af551deb.html

探讨

算了.........我把问题通用化.

如何设计0....9个数的全排列的哈希函数...??

读书人网 >软件架构设计

热点推荐