我们可以声明一个锯齿状数组,其中一些是一维的,一些是二维或多维数组。可能是什么建议。
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。
答案 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%,一定要选择一个好的。