А кто вам сказал, что сложные судоку должны решаться без перебора?
Человек в уме может прикинуть "если тут эта цифра, то..." на несколько шагов вперед, держа каждый из них в памяти.
Машина делает то же самое перебором. Это нормально.
Другое дело, что если вы делаете программу для составления судоку, вам стоит рассчитывать на решение ее человеком - а значит, необходимости глубоких переборов все-таки избегать.