【问题标题】:Declare a jagged array, consists of one dimentional and two dimentional arrays?声明一个交错数组,由一维和二维数组组成?
【发布时间】:2012-12-27 20:10:35
【问题描述】:

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

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 CHANGED 二维数组将记录 CELL VALUE CHANGED

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

我希望我解释了这个场景。我尽力了:D。

【问题讨论】:

  • 否;那是不可能的。而且,这听起来像是一个可怕的想法。
  • 谢谢 SLaks,我同意,你说的完全正确。我们可以使用这种预定义的锯齿状数组规则,但我们是否可以让我们自己的锯齿状数组类型在我们的自定义数据类型中均值......坦率地说......任何开放的建议。
  • 你想要完成什么?
  • 好的,我正在用简短的例子编辑这个问题。
  • @SLaks 请把你的聪明想法再次放在问题上。

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


【解决方案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%,一定要选择一个好的。

【讨论】:

  • 你不能创建一个同时包含一维和二维数组的数组。
  • 不确定我们说的是同一件事。像 int[][,] 这样的声明当然是有效的,它是一个包含 2D 数组元素的 1D 数组的数组。试试看。
  • 我明白了。实际上,最初的问题是使用 CSP(满足问题的约束)的时间表调度。但是数独的类比是最接近原始的一种。到目前为止,我已经创建了一个 jagges 数组..它将空间复杂度降低了 25-30%。 obj[4][] = {新 obj[3], 新 obj[3], 新 obj[3], 新 obj[3]};你有什么更好的建议……???
  • @HansPassant:看来我误解了这个问题。我以为他想要一些元素是int[],一些元素是int[,]
猜你喜欢
  • 1970-01-01
  • 2022-01-15
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 2017-10-12
  • 1970-01-01
相关资源
最近更新 更多