【问题标题】:Jagged or multi-dimensional array for sudoku数独的锯齿状或多维数组
【发布时间】:2013-02-24 03:09:04
【问题描述】:

我想用 c# 制作数独。我应该使用锯齿状数组还是多维数组。为什么?

我知道对于简单的数组逻辑(例如数独),锯齿状数组更快、更高效。但也许还有其他论点?

提前致谢。

编辑:我需要对数独执行一些求解方法。就像回溯算法一样。我发现多维数组有更好的语法。

我想我的问题是:哪个最容易使用、实现和修改?

【问题讨论】:

  • 数独使用 9x9-fields 板。在这种情况下,我不明白为什么要使用锯齿状数组。
  • 您要存储数独启动模式和完整的解决方案吗?如果您只打算存储起始模式,而数组中没有填充数字,则锯齿状数组可能是有益的。
  • 您已经回答了您的问题。在 .NET 中更喜欢多维数组的唯一原因是样式的选择。否则,锯齿状数组就是要走的路。在这里查看这个精彩的讨论:stackoverflow.com/questions/597720/…
  • 或者两者都不是? 2D 数组可以轻松访问每个单元格,但不能方便地处理整行、列或 3x3 区域(无需遍历 9 个单元格中的每一个并复制到新结构)。
  • 如果你同意少一个字符更简单,那就用多维数组,别想了。

标签: c# multidimensional-array jagged-arrays


【解决方案1】:

不要为了过早的优化而继续把事情复杂化。使用简单的多维数组,如果以后发现它会导致性能问题,请重构代码以考虑到这一点。

提示:您可能遇到的任何性能问题都不会来自选择多维或交错数组。

【讨论】:

    【解决方案2】:

    选择最能代表特定数据的数据结构。

    您是否使用数组来表示具有固定尺寸的事物网格(例如,数独解决方案)?然后使用多维数组。

    您想在数组中存储的内容数量是否可以更改(例如,数独开始模式或用户为数独单元格输入的潜在值)?那么也许一个锯齿状的数组会更好。

    您的程序中还可以有多种类型的数组,例如用于存储解决方案的多维数组和用于存储其他数据的锯齿状数组。或者完全不同的数据结构。

    底线是,对于数据量相对较少的数独,性能不会成为您最大的问题。您最好尽可能清晰地构建程序并担心以后的性能。

    【讨论】:

      【解决方案3】:

      我个人发现这样的锯齿状数组更容易阅读,但这取决于个人喜好。归根结底,数独不会出现性能问题,因此请使用您认为更清晰的任何一个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-13
        • 1970-01-01
        • 1970-01-01
        • 2018-11-04
        • 2018-07-26
        • 1970-01-01
        • 1970-01-01
        • 2011-03-01
        相关资源
        最近更新 更多