К автору задачи.
Для начала надо попробовать решить задачу без полного перебора. Пройдемся по всем 81 клеточкам (естественно, незанятым). Для каждой быстренько заводим массив из 9 целых чисел, заполняем его единичками. Потом проходим по всем остальным клеткам квадрата 3х3, в котором находится рассматриваемая клетка, если она не пустая и равна n, то заменяем n-й элемент массива ноликом. Потом то же самое делаем с той строкой, в которой находится текущая клетка, и со столбцом, соответственно. После этой операции суммируем массив, если его сумма равна единице, то вариантов заполнения этой клетки ровно 1, ищем единственный не равный нулю элемент массива и проставляем значение в клетку. Если сумма массива оказалась больше единицы, пропускаем эту клетку. И так проходим по всем 81 клеткам много раз до тех пор, пока алгоритм работает.
После того, как "очевидных" клеток не осталось, придется включать алгоритмы перебора, я в них никогда не был силен.
|