C# 用于数独的锯齿形或多维数组

C# 用于数独的锯齿形或多维数组,c#,multidimensional-array,jagged-arrays,C#,Multidimensional Array,Jagged Arrays,我想用c做一个数独游戏。我应该使用交错数组还是多维数组。为什么 我知道,对于简单的数组逻辑,比如数独,交错数组更快、效率更高。但也许还有其他的论点 提前谢谢 编辑:我需要在数独上执行一些求解方法。就像回溯算法一样。我发现多维数组有更好的语法 我想我的问题是:哪一种最容易使用、实现和修改?选择最能代表特定数据的数据结构 您是否使用数组来表示具有固定维度的网格(例如数独解决方案)?然后使用多维数组 您希望存储在数组中的内容的数量会发生变化吗?例如,数独开始模式或用户为数独单元格输入的潜在值?那么也许

我想用c做一个数独游戏。我应该使用交错数组还是多维数组。为什么

我知道,对于简单的数组逻辑,比如数独,交错数组更快、效率更高。但也许还有其他的论点

提前谢谢

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


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

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

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

您希望存储在数组中的内容的数量会发生变化吗?例如,数独开始模式或用户为数独单元格输入的潜在值?那么也许锯齿阵列更好

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


底线是,对于数据量相对较小的数独游戏来说,性能并不是最大的问题。您最好尽可能清晰地构建程序,并在以后担心性能。

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


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

我个人认为,对于这种类型的数组,锯齿数组更易于阅读,但这取决于个人偏好。最终,数独游戏不会出现性能问题,因此请使用您认为更清晰的选项。

数独游戏使用9x9字段板。我不明白你为什么要在这种情况下使用锯齿数组。你想同时存储数独开始模式和完整的解决方案吗?如果您只打算存储开始模式,而数组中没有填充数字,那么锯齿状数组可能是有益的。您已经回答了这个问题。在.NET中选择多进制数组的唯一原因是样式的选择。否则,锯齿状阵列就是最好的选择。看到这个伟大的讨论了吗:或者两者都没有?二维数组可以方便地访问每个单元格,但如果不遍历9个单元格中的每个单元格并复制到新结构,就无法方便地处理整行、整列或3x3区域。如果您同意少键入一个字符更简单,请使用多维数组并停止思考。