我有一个最大35字符网格(1x35..5x7)或其他任何东西。网格上每个单元格的值只能是二进制。在模拟具有某些移动的游戏时,这意味着等级可能会发生变化移动后的状态。如果我必须检测游戏的周期/周期,我可以在尽可能少的时间复杂度中使用什么算法/数据结构?我尝试了一种基于log n树的方法来存储网格的状态,但是当周期大于2 ^ 17时,它对于我的目的来说还不够快。是否有一种技术可以在不占用太多内存的情况下对网格状态执行散列处理?
答案 0 :(得分:1)
网格是一个35位数字,因此您可以将网格存储为整数(在64位计算机上)或2个单词存储在较小的网格上。你可以保留已在巨型直接地址数组或哈希表中看到过的状态。