В основном для задания мне нужно создать программу на C#, которая будет принимать номер в качестве ввода (n), а затем создать размер 2D-массива n * n с номерами от 1 до (n * n). Он должен использовать метод грубой силы. Я сделал это, но в настоящий момент программа будет просто произвольно генерировать порядок чисел каждый раз, поэтому иногда будет проверять один и тот же порядок более одного раза. Очевидно, это означает, что для проверки любого числа выше 3 требуется очень много времени, и даже для 3 это может занять несколько минут. В основном мне интересно, есть ли у меня какой-то способ сделать это, только проверив каждый заказ один раз. Мне разрешено использовать только «базовые» функции C#, поэтому просто такие вещи, как *, /, +, - и ничего подобного .Shuffle и т. Д.Алгоритм алгоритма магии квадратных квадратов
ответ
Выбор случайного порядка, как вы нашли, это не очень хорошая идея.
Я предлагаю вам поместить все число 1 ... (n * n) в массив и найти всю перестановку.
Когда у вас есть все перестановки, легко создать квадрат (1 .. n ==> первая строка, n + 1 ... 2n ==> вторая строка и т. Д.).
Теперь найти все перестановки можно сделать с основной работой с рекурсией
Позволь мне убедиться, что я понимаю, вопрос: вы хотите, чтобы перечислить все перестановки чисел от 1 до п квадратов, и проверить, является ли перестановка создает магический квадрат. Вы произвольно генерируете перестановки, но вместо этого вы хотите сгенерировать все перестановки.
Я написал серию статей о генерации перестановок; это слишком долго, чтобы легко суммировать здесь.
http://ericlippert.com/2013/04/15/producing-permutations-part-one/
- 1. Изменение квадратных квадратов квадратных квадратов, возвращающих значение
- 2. Макросы квадратов силы магии
- 3. JavaScript - улучшающий алгоритм поиска квадратных корней совершенных квадратов без Math.sqrt
- 4. Отобразить несколько квадратных квадратов в UITableViewCell
- 5. наименьших квадратов алгоритм не работает
- 6. Требуется точный алгоритм соответствия наименьших квадратов
- 7. Алгоритм вычисления квадратных чисел для средних четырех квадратов на игровом поле?
- 8. Преобразование квадратных квадратных чисел в координаты
- 9. Как работает сумма квадратов разностного алгоритма?
- 10. Эффективное вычисление алгоритма наименьших квадратов в NumPy
- 11. Алгоритм алгоритма основных рекомендаций
- 12. алгоритм двойного алгоритма устранения
- 13. Алгоритм алгоритма Graphics.DrawEllipse?
- 14. Алгоритм определения алгоритма linestring
- 15. Алгоритм алгоритма словаря refactor
- 16. Алгоритм минимального алгоритма задержки
- 17. Алгоритм алгоритма Дейкстры
- 18. Алгоритм оптимизации алгоритма?
- 19. Алгоритм алгоритма рыцарского тура
- 20. Алгоритм аппроксимации алгоритма Колмогорова
- 21. Алгоритм: алгоритм деления алгоритма Дональда Кнута
- 22. Алгоритм минимизации наименьших квадратов при выполнении распределения?
- 23. Алгоритм вычисления площади области в сетке квадратов
- 24. Алгоритм, необходимый для максимизации числа квадратов в прямоугольнике с ограничениями
- 25. Алгоритм алгоритма Хаффмана обратного соответствия
- 26. Почему алгоритм жадного алгоритма оптимален?
- 27. Алгоритм алгоритма подсчета графов Haskell
- 28. Алгоритм алгоритма Дейкстры в Python
- 29. Краткосрочный алгоритм алгоритма подсказки Boost
- 30. Python: алгоритм алгоритма Рабина-Карпа
Можете ли вы написать свою собственную функцию тасования? Это очень легко сделать. – Dukeling
1) показывает нам, что у вас есть до сих пор, и 2) что вы подразумеваете под Brute Force, и почему вы должны использовать его? 3) Если вы действительно имеете в виду настоящую грубую силу (исчерпывающий поиск всех возможных комбинаций), она, очевидно, имеет серьезный экспоненциальный рост для этой проблемы, даже три должны быть медленными. – RBarryYoung
Исходя из того, что вы сделали, я предполагаю, что эти числа должны быть случайным образом распределены в сетке (не только начиная с 1 в левом верхнем углу). Это верно? – Dukeling