假设我正在设计一个在无限台上玩的井字游戏。成功将三个标记放在水平,垂直或对角线上的玩家获胜。 代表它的最佳数据结构是什么? 我只能想到哈希表来记录位置。对于每个新位置,检查其周围环境以评估获胜。
还有其他更好的主意吗?
答案 0 :(得分:1)
尽管您拥有无限局面,但仍应为游戏分配坐标。坐标可能是从0到很大的数字。
现在,您的坐标实际上是无限的。为什么不使用简单的坐标字典? C ++:
std::map<std::pair<long, long>, MySquare> m;
例如,您正在(460,670)上,您要检查(461,671)。只需检查(461,671)是否在m
中,否则就无需添加新条目。
这种非常简单的设计很健壮,因为它仅在确实需要时才分配内存。
不要让自己过于复杂。