我有一个5维数组,其中所有的索引都在2-14之间。它包含一个5位数序列的所有可能的排列。这个数组包含525720个排列,这需要相当长的时间来计算。(在我的Macbook pro上5-7秒)。它应该用作查找表,以访问固定时间内的值,或者更具体地说,访问某个扑克手的值:
array[2][3][4][5][7] // 1
array[5][5][5][5][14] // 2000
有没有更快的方法来创建这个数组?我在考虑以某种方式持久化数组,然后在每次程序启动时加载它--但是有什么有效的方法可以做到这一点吗?
我不太熟悉持久化。我真的不知道这是否值得我从磁盘加载它,而不是每次都创建它。我知道Hibernate,但这似乎有点过头了,仅仅为了持久化单个数组?
发布于 2010-02-05 04:37:35
以下是一些事情:
如果这是扑克牌手牌,你不能只存储2-14。您还需要存储西装以及。这实际上意味着你需要存储0-51。否则你无法知道array[2][3][4][5][6]
是同花顺还是同花顺。
如果你实际上不需要为你的应用程序存储套装,并且你真的想在一个数组中存储它,那么使用0-12的索引,而不是2-14。这将允许您使用13×13×13×13×13 (371,293成员)阵列,而不是15×15×15×15×15 (759,375成员)阵列。每当访问数组时,只需从每个索引中减去2即可。(我不确定你的525,720个数字是从哪里来的……)
https://stackoverflow.com/questions/2202836
复制相似问题