我正在一个Gomoku游戏,我需要一个高效的数据结构来存储板状态, 我想过把它存储在一个二维数组中,但我相信有更多高效的方式。 谢谢Gomoku董事会代表
0
A
回答
0
在时间效率方面,因为我相信你会主要做索引查找,所以一个数组几乎是最好的选择 - 它支持持续时间的这种查找,具有低常数因子。
在空间效率方面:
每个正方形可以是空的,或由播放器填充。所以最多有3种可能性。为了获得最大的空间利用效率,我们可以将我们的整个电路板存储为3进制表示形式,但是,由于计算机工作在二进制模式,因此我们需要处理整个电路板以确定给定平方的值(因此只需索引查找就可以了需要时间与董事会的大小成正比 - 如果时间真的不是一个问题,你可以考虑这一点)。相反,我建议使用每平方2位,这将允许我们指出4种可能性中的一种(第4种未被使用)。
许多语言都有某种bitset的实现,允许你使用一系列位,这对于上述是完美的。
你也只想要一个位集(而不是2D),因为在处理二维结构时通常会涉及一些内存开销。从2D到1D的转换很简单 - 我们可以用x*height + y
或y*width + x
将2D索引转换为1D。尽管我会推荐首先确定你需要执行这种优化 - 我相信Gomoku主板通常很小,所以即使是笨重的表示也能完美工作(尽管一些AI技术可以制作很多副本,所以,如果你这样做,最小的表示将是有意义的)。
相关问题
- 1. Pinterest董事会名单
- 2. 董事名单
- 3. 董事会未做出一块移动
- 4. 评论董事会删除评论
- 5. 董事会在C扫雷艇
- 6. 的Mips - 印刷游戏的董事会
- 7. mocha,node.js,ReferenceError:董事会没有定义
- 8. 从看板董事会过滤史诗
- 9. Facebook FBML FB:董事会的麻烦
- 10. Gomoku中的Minimax代表性好吗?
- 11. Gomoku启发式
- 12. Jquery Flot条形图不适合董事会
- 13. 将项目和董事会连接到Jira API
- 14. 如何从董事会获得有效的邻居?
- 15. 查询董事会的挑战,需要一些指点
- 16. 如何使用数组索引中鲁董事会
- 17. Pinterest API:是否有可能获得秘密董事会?
- 18. Trello API - 使用ID获取组织的董事会
- 19. 多个项目的TFS董事会合并
- 20. 团结 - 参数超出范围建立董事会
- 21. 如何禁用“联系董事会管理员”?
- 22. TFS 2012中积压和董事会页面
- 23. n皇后,检查有效的董事会
- 24. 董事会是否提出封装的底层架构依赖?
- 25. 如何打开一个新的董事会使用Trello的API
- 26. 如何找到您的Pinterest董事会ID
- 27. phpbb - 如何限制访问董事会索引
- 28. Gomoku datas representation in C
- 29. 如何从Gomoku开始?
- 30. 执行董事会的备份和对文件进行某些操作
为什么你会认为有更高效的数据结构?您需要支持哪些操作在2D数组中效率低下?我对Gomoku并不是很熟悉,但是您似乎主要做索引查找,对此,选择的数据结构是一个数组。 – Dukeling
我正在寻找更好的内存效率 – YonBruchim