1

一部が 1 次元で、一部が 2 次元または多次元配列であるジャグ配列を宣言できますか。提案は何でしょうか。

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

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

これらの両方から 1 つの配列を作成できますか?

ここで、SUDOKU の最も適切な例を示します。:)

サブグリッドに分割された文字列の 2 次元配列 (たとえばグリッド) があるとします。少しデータを表示しています。

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,」を削除すると。変更された行、変更された列、および変更された各文字列値のログを追跡または維持するにはどうすればよいでしょうか。

SPACE COMPLEXITY が最も低いことを念頭に置いて提案してください。

大量のスペースが無駄になるため、別の複製 2-D 配列を作成することはできません。

私の意見では、3 つのアレイが必要です。

1 次元配列は行の記録を保持します CHANGED 1 次元配列は COLS の記録を保持します CHANGED TWO 次元配列は CELL VALUE CHANGED の記録を保持します

これら 3 つの配列をすべて 1 つに変換するとします。仕事がぐっと楽になります。

シナリオを説明したことを願っています。私は最善を尽くしたので: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 に答える