声明一个锯齿状的数组,由一维和二维数组组成?

时间:2012-12-27 20:10:35

标签: arrays c#-4.0 multidimensional-array jagged-arrays

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

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

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

我们可以用这两个数组制作一个数组吗?

  

实施例

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

假设我们有2-D字符串数组(比如网格),分为子网格。 我正在展示一些数据。

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,已更改的cols以及已更改的每个字符串值。

以最低的空间复杂度为基础提供建议。

因为我们无法制作另一个重复的二维数组,因为会浪费很多空间。

在我看来,我需要3个阵列。

ONE Dimentional数组将记录行已更改 ONE Dimentional数组将记录COLS CHANGED TWO Dimentional数组将记录CELL VALUE CHANGED

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

我希望我解释了这个场景。因为我尽我所能:D。

1 个答案:

答案 0 :(得分: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]
};

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