저는 사용자가 자신의 스도쿠 보드를 만들 수있는 웹 기반 스도쿠 게임을 개발 중입니다. 사용자가 보드를 조립할 때 가능한 해결책의 수를 알려주는 방법이 필요합니다. 그래서 기본적으로 대한주어진 스도쿠 퍼즐에 대한 솔루션 수를 계산 하시겠습니까?
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;
}
: 고유의 솔루션을 가지고 스도쿠에 대한 항목의 최소 수는 내가 여기
17 이하의 항목 수에 대한 솔루션의 수를 찾을 필요 17. 내 방법 것입니다 각각의 빈 셀은 1-9의 숫자를 삽입하고 각 숫자에 대한 게임을 풀려고합니다. 성공한 경우 솔루션 수를 늘립니다. 그러나 이것은 모든 가능한 조합의 수를 얻지는 않습니다. 플러그 할 수있는 각 셀의 수의 합계가 아닙니다.
계산 방법은 있습니까?
스도쿠 해결이 NP-완료,하지만 아주 작은 N이있다 (9) 그래서 스도쿠 솔버 및 밀리 초 단위로 실행 할 수 있습니다 . – Patashu
@Patashu 여전히 미확인 격자의 경우 가능한 해결책의 수가 빠르게 폭발하므로 "하지 마라"는 좋은 충고입니다. –
@DanielFischer 0, 1, 2, 3, 4, 5 또는 'too many'를 반환하는 솔루션을 상상해보십시오. 그것은 쉽게 쓸 수 있으며 OP가 원하는 것입니다. – Patashu