2012-12-27 82 views
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的記錄所改變 二三維Minkowski空間陣列將保留單元格值的記錄所改變

如果我們把所有這三個陣列爲一體。工作會更容易。

我希望我解釋了這種情況。正如我盡我所能:D。

+0

否;這是不可能的。而且,這聽起來像一個可怕的想法。 – SLaks

+0

謝謝SLaks,我同意,你是絕對正確的。我們可以使用這個預定義的Jagged數組規則,但是我們可以在我們的自定義數據類型中創建自己的參數類型的鋸齒數組......坦率地說......任何公開的建議。 –

+0

你想完成什麼? – SLaks

回答

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%的戰鬥,一定要挑選一個好的模型。

+0

您無法制作可包含1D和2D陣列的陣列。 – SLaks

+1

不知道我們在談論同樣的事情。像int [] [,]這樣的聲明當然是有效的,它是一個包含2D數組元素的一維數組的數組。嘗試一下。 –

+0

我正在理解它。實際上最初的問題是使用CSP的時間表製表(約束滿足問題)。但數獨的類比是最接近原始的。迄今爲止,我創建了一個jagges數組,它將空間複雜度減少了25-30%。 obj [4] [] = {new obj [3],new obj [3],new obj [3],new obj [3]};你有什麼更好的建議....? –

相關問題