Я разрабатываю веб-игру судоку, которая позволяет пользователю создавать свою собственную доску судоку. Мне нужен способ сообщить пользователю количество возможных решений, которые имеет собранная им плата. Минимальное количество записей для судоку, чтобы иметь уникальное решение, равно 17. Мне нужно найти количество решений для количества записей меньше 17.
Вот мой метод:
public long numberOfSolutions (Board myBoard) {
this.board = myBoard;
this.tempBoard = new Board();
long num = 0;
tempBoard.copy(board);
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
if (board.getCell(i,j).equals(0)) {
for(int k=1;k<10;k++){
board.setCell(i, j, k, true);
if(isCorrect() && solvable()){
num++;
}
board.copy(tempBoard);
}
}
}
}
return num;
}
Поэтому в основном для каждой пустой ячейки я вставляю числа от 1 до 9 и пытаюсь решить игру для каждого числа. В случае успеха увеличьте количество решений. Но это не дает мне количество всех возможных комбинаций, а сумму количества чисел для каждой ячейки, которая может быть подключена.
Есть ли способ, которым я могу рассчитать это?