【问题标题】: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 中,如果不是,则添加一个新条目。

这个非常简单的设计非常健壮,因为它只在您真正需要时才分配内存。

不要让自己过于复杂。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多