Board s(int num, Board b) { if (num > 81 || b.checkComplete()) { return b; } for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { if (b.get(i, j) == 0) { for (int n = 1; n < 10; n++) { if (!existInRow(b, j, n) && !existInCol(b, i, n) && !existInZone(b, i, j, n)) { int[,] copy = (int[,])b.getArray().Clone(); b.set(i, j, n); Board tmp = s(num + 1, b); if (tmp != null) { return tmp; } else { b.set(copy); } } } return null; } } } return b; }