2013-03-08 1 views
0

Я хочу сделать судоку с помощью C#. Должен ли я использовать зубчатый или многомерный массив. И почему?Яичный или многомерный массив для судоку

Я знаю, что зубчатые массивы быстрее и эффективнее для простой логики массивов, таких как судоку. Но, может быть, есть и другие аргументы?

Заранее спасибо.

Редактировать: Мне нужно выполнить некоторые методы решения на судоку. Как и алгоритм обратного слежения. Я обнаружил, что многомерные массивы имеют лучший синтаксис.

Я думаю, мой вопрос:, который прост в использовании, реализовать и изменить?

+3

Судоку использует панель 9x9 полей. Я не понимаю, почему вы захотите использовать в этом случае неровный массив. – Nolonar

+0

Вы хотите сохранить как шаблон начала судоку, так и полное решение? Замятый массив может быть benificial, если вы планируете хранить начальный шаблон, где массив не заполнен цифрами. –

+0

Вы уже ответили на вопрос. Единственная причина, по которой предпочтение многомерным массивам в .NET - выбор стиля. В противном случае зубчатые массивы - это путь. Смотрите эту замечательную дискуссию здесь: http://stackoverflow.com/questions/597720/what-is-differences-between-multidimensional-array-and-array-of-arrays-in-c –

ответ

6

Не стоит усложнять задачу только ради преждевременной оптимизации. Используйте простой многомерный массив, а затем, если позже вы обнаружите, что это вызывает проблемы с производительностью, реорганизуйте свой код, чтобы принять это во внимание.

Подсказка: любые проблемы с производительностью, которые могут возникнуть у вас, не будут возникать из-за выбора многомерных или зубчатых массивов.

4

Выберите структуру данных, которая наилучшим образом представляет конкретные данные.

Вы используете массив для представления сетки вещей с фиксированными размерами (например, решение sudoku)? Затем используйте многомерный массив.

Может ли количество вещей, которые вы хотите сохранить при изменении массива (например, начальный шаблон sudoku или потенциальные значения, которые пользователь вводит для ячейки sudoku)? Тогда, возможно, зубчатый массив лучше.

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

Суть в том, что для чего-то вроде судоку с относительно небольшим количеством данных производительность не будет вашей самой большой проблемой. Вам будет лучше структурировать программу настолько ясно, насколько это возможно, и беспокоиться о производительности позже.

0

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