【问题标题】:Best data structure for tic-tac-toe game with infinite board无限棋盘井字游戏的最佳数据结构
【发布时间】:2018-07-26 05:23:01
【问题描述】:
假设我正在设计一个在无限棋盘上玩的井字游戏。成功将三个标记放置在水平、垂直或对角线行中的玩家获胜。
表示它的最佳数据结构是什么?
我只能想到哈希表来记录位置。对于每个新位置,检查其周围环境以评估获胜。
还有什么更好的主意吗?
【问题讨论】:
-
您可能正在寻找某种sparse matrix。有许多不同的方法来实现这样的事情。您的应用程序的“最佳”将取决于您的要求:易于实施?最大化速度?最小化空间?只有您可以决定什么对您来说是最好的。
标签:
algorithm
data-structures
【解决方案1】:
虽然你有一个无限的棋盘,你仍然应该为你的游戏分配坐标。坐标可能是从 0 到一个非常大的数字。
现在,你有一个几乎无限的坐标。为什么不是一个简单的坐标字典? C++:
std::map<std::pair<long, long>, MySquare> m;
例如,您在 (460,670),您想检查 (461,671)。只需检查 (461,671) 是否在 m 中,如果不是,则添加一个新条目。
这个非常简单的设计非常健壮,因为它只在您真正需要时才分配内存。
不要让自己过于复杂。