Объявить зубчатый массив, состоящий из одномерного и двухмерного массивов?

Можем ли мы объявить зубчатый массив, в котором некоторые из них являются одномерными, а некоторые двух- или многомерными массивами. Какие могут быть предложения.

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 массива.

ОДИН Многомерный массив будет вести запись строк ИЗМЕНЕНО ОДИН размерный массив будет хранить запись ЦВЕТОВ ИЗМЕНЕН ДВА Размерный массив будет хранить запись ЗНАЧЕНИЕ ЯЧЕЙКИ ИЗМЕНЕНО

Если мы преобразуем все эти три массива в один. Работать станет намного легче.

Надеюсь, я объяснил сценарий. как я старался изо всех сил :D.


person Khizer Ali    schedule 27.12.2012    source источник
comment
Нет; это невозможно. И это звучит как ужасная идея.   -  person SLaks    schedule 28.12.2012
comment
Спасибо SLaks, согласен, вы абсолютно правы. мы могли бы использовать эти предопределенные правила зубчатых массивов, но могли бы мы сделать наш собственный тип зубчатого массива означающим в нашем пользовательском типе данных ... Честно говоря ... любое открытое предложение.   -  person Khizer Ali    schedule 28.12.2012
comment
Что вы пытаетесь достичь?   -  person SLaks    schedule 28.12.2012
comment
Хорошо, я редактирую этот вопрос с кратким примером.   -  person Khizer Ali    schedule 28.12.2012
comment
@SLaks, пожалуйста, еще раз подумайте над вопросом.   -  person Khizer Ali    schedule 28.12.2012


Ответы (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% победы, обязательно выберите хорошую.

person Hans Passant    schedule 27.12.2012
comment
Вы не можете создать массив, который может содержать как одномерные, так и двумерные массивы. - person SLaks; 28.12.2012
comment
Не уверен, что мы говорим об одном и том же. Объявление типа int[][,] безусловно допустимо, поскольку это массив, содержащий одномерный массив элементов двумерного массива. Попробуй это. - person Hans Passant; 28.12.2012
comment
Я понимаю это. На самом деле исходная проблема заключается в планировании расписания с использованием CSP (ограничения, удовлетворяющие проблемы). Но аналогия судоку наиболее близка к оригиналу. Пока я создал массив зубцов, который уменьшает сложность пространства на 25-30%. obj[4][] = {новый объект[3], новый объект[3], новый объект[3], новый объект[3]}; У вас есть предложения получше....??? - person Khizer Ali; 28.12.2012
comment
@HansPassant: Похоже, я неправильно понял вопрос. Я думал, он хотел, чтобы некоторые элементы были int[], а некоторые — int[,]. - person SLaks; 28.12.2012