首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

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

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

实现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个数的全排列的哈希函数...??

热点排行