1

我们可以声明一个锯齿状数组,其中一些是一维的,一些是二维或多维数组。有什么建议。

int[][,] jaggedArray1 = new int[3][,] 
{
    new int[,],
    new int[,],
    new int[,] 
};

int[][]  = new int[3][]
{
    new int[],
    new int[],
    new int[]
};

我们可以把这两者做成一个数组吗?

例子

我在这里给出数独最合适的例子。:)

假设我们有一个二维字符串数组(比如网格),分为子网格。我正在显示一些数据。

4x4 网格。分为4个子网格。每个元素都是一个包含在“”中的字符串

"1,3,", "2,3"        "1,3,", "2,3"
"1,4,", "4,1"        "1,3,", "2,3"

"1,3,", "2,3"        "1,3,", "2,3"
"1,4,", "4,1"        "1,3,", "2,3"

如果从第 1 行、第 1 列和第 1 个区域中删除“1”。我们如何跟踪或维护已更改的行、已更改的列以及已更改的每个字符串值的 LOG。

以最低的空间复杂度给出建议。

由于我们无法制作另一个重复的二维数组,因为将会浪费大量空间。

在我看来,我需要 3 个数组。

一维数组将记录更改的行 一维数组将记录 COLS 更改 二维数组将记录 CELL VALUE CHANGED

如果我们将所有这三个数组转换为一个。工作会轻松很多。

我希望我解释了这个场景。当我尽力而为时:D。

4

1 回答 1

1

不; 那是不可能的。

当然有可能。您只是忘记在初始化程序中确定数组大小,您不能永远推迟它。任意偏爱数字 3,这将编译得很好:

int[][,] partiallyJaggedArray = new int[3][,] {
    new int[3, 3],
    new int[3, 3],
    new int[3, 3] 
};

int[][] reallyJaggedArray = new int[3][] {
    new int[3],
    new int[3],
    new int[3]
};

但是它们都不是数独网格的特别好的模型。选择正确的模型是战斗的 50%,一定要选择一个好的。

于 2012-12-27T22:49:04.400 回答