We could always just go with brute-force recursive solution may be not the best idea if people end up testing against very, very difficult puzzles, and you can come up with some really pathologically evil Sudoku puzzles if you don't have fast algorithm. 