Учитывая частично заполненный двумерный массив 9 × 9 «сетка [9] [9]», цель состоит в том, чтобы назначить цифры (от 1 до 9) пустым ячейкам, чтобы каждая строка, столбец и подсетка размера 3 × 3 содержали ровно один экземпляр цифр от 1 до 9.
Наивный Алгоритм
Наивный алгоритм состоит в том, чтобы генерировать все возможные конфигурации чисел от 1 до 9, чтобы заполнить пустые ячейки. Попробуйте каждую конфигурацию одну за другой, пока не найдете правильную конфигурацию.
Алгоритм возврата
Как и все другие проблемы с возвратом , мы можем решать судоку по одному, присваивая номера пустым ячейкам. Прежде чем присваивать номер, мы проверяем, можно ли его присваивать. Мы в основном проверяем, что одно и то же число не присутствует в текущей строке, текущем столбце и текущей подсети 3X3. После проверки безопасности мы присваиваем номер и рекурсивно проверяем, приводит ли это назначение к решению или нет. Если назначение не приводит к решению, то мы пробуем следующий номер для текущей пустой ячейки. И если ни одно из чисел (от 1 до 9) не приводит к решению, мы возвращаем false.
Find row, col of an unassigned cell If there is none, return true For digits from 1 to 9 a) If there is no conflict for digit at row, col assign digit to row, col and recursively try fill in rest of grid b) If recursion successful, return true c) Else, remove digit and try another If all digits have been tried and nothing worked, return false
Ниже приведена реализация проблемы судоку. Он печатает полностью заполненную сетку в качестве вывода.
|
С
|
Джава
|
питон
|
C #
|
Выход:
3 1 6 5 7 8 4 9 2 5 2 9 1 3 4 7 6 8 4 8 7 6 2 9 5 3 1 2 6 3 4 1 5 9 8 7 9 7 4 8 6 3 1 2 5 8 5 1 7 9 2 6 4 3 1 3 8 9 4 7 2 5 6 6 9 2 3 5 1 8 7 4 7 4 5 2 8 6 3 1 9
Ссылки:
http://see.stanford.edu/materials/icspacs106b/H19-RecBacktrackExamples.pdf
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Программа для генератора судоку
- Проверьте, является ли данная конфигурация платы Судоку действительной или нет
- Google Interview Experience
- Microsoft Интервью Опыт | В кампусе
- Зохо Интервью Опыт | Вне кампуса для разработчика программного обеспечения Java
- Amazon Интервью Опыт | 6-месячный стажер для SDE
- Amazon Интервью Опыт | 6-месячная стажировка (вне кампуса)
- Опыт интервью PayPal
- Ожидаемое количество ходов, чтобы достичь конца доски | Матрица возведения в степень
- Ожидаемое количество ходов, чтобы достичь конца доски | Динамическое программирование
- Найти минимальную разность пути от (0, 0) до (N-1, M-1)
- Amazon Интервью Опыт | SDE Intern (вне кампуса)
- Максимизировать прибыль после продажи билетов
- Microsoft Интервью Опыт | Бассейн-Campus
0.00 (0%) 0 votes