实现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