Создание массива (?) Наборов в Java - PullRequest
2 голосов
/ 02 февраля 2011

Я пытаюсь написать алгоритм, который находит количество решений в заданной частично заполненной доске Судоку. т.е. дано

"1 6 4 0 0 0 0 0 2",
"2 0 0 4 0 3 9 1 0",
"0 0 5 0 8 0 4 0 7",
"0 9 0 0 0 6 5 0 0",
"5 0 0 1 0 2 0 0 8",
"0 0 8 9 0 0 0 3 0",
"8 0 9 0 4 0 2 0 0",
"0 7 3 5 0 9 0 0 1",
"4 0 0 0 0 0 6 7 9"

, где 0 представляют пустые места. Я хочу создать 3 отдельных массива наборов, по одному для каждого набора чисел в каждом столбце, строке и квадрате 3х3. Я пытаюсь декларации:

horizontal = new HashSet<Integer>[9];

Где закрытый горизонтальный HashSet [] объявлен ранее, но это не работает. Что такое правильное объявление или я не могу объявить массив множеств?

Ответы [ 3 ]

1 голос
/ 02 февраля 2011

Вы можете попробовать это:

horizontal = new ArrayList<HashMap<Integer>>();

Получите доступ к нему с помощью horizontal.get(1);, и вы можете обращаться с ним так же, как с обычным массивом.Как сказал @ user599152, вы не можете создавать универсальные массивы.Так что вам нужно найти другой способ.Список, вероятно, ваш лучший выбор.

1 голос
/ 02 февраля 2011

Проблема в параметре типа. Вы не можете создавать универсальные массивы в Java. Вы можете удалить параметр type, и он будет работать, но вы должны получить предупреждение о непроверенных операциях.

0 голосов
/ 02 февраля 2011

Массив наборов - странный способ хранения данных.2d массив или 2d массив 2d массивов может быть гораздо более интуитивным способом моделирования этого.Возможно, даже двумерный массив некоторого пользовательского класса ("SudokuCube") также будет работать лучше, чем массив множеств.

...