이 자습서에서는 핵심 Java를 사용하여 스도쿠 퍼즐에 대한 두 가지 해결 방법을 설명했습니다. 무차별 대입 알고리즘인 역추적 알고리즘은 표준 9×9 퍼즐을 쉽게 해결할 수 있습니다. 이 문서는 자바에서 스도쿠 게임의 구현에 관한 것입니다. 이 버전은 도움말을 사용하고 오류를 확인할 수있는 기능을 갖춘 직관적 인 인터페이스가 포함되어 있습니다. 도움말을 켜면 선택한 숫자에 대해 가능한 모든 필드가 표시됩니다. 오류가 있는지 확인한 후 프로그램은 유효한 필드를 녹색으로 표시하고 잘못된 필드를 빨간색으로 표시합니다. 이 구현에서 사용되는 규칙은 다음과 같습니다 : 당신이 자바 프로그래밍을 배울 수있는 몇 가지 책을 발견하려는 경우, 나는 당신이 자바 프로그래밍을위한 상위 6 최고의 책의 내 선택과 함께 다음 기사를 읽을 조언 : 그 튜토리얼에서, 우리는 스도쿠를 개발할 것입니다 이클립스와 자바의 솔버. 재귀 역추적 방법을 사용합니다. 간단하고 거의 순진한 접근 방식. 이후 자습서에서는 보다 영리한 접근 방식을 구현하는 방법을 배웁니다. 다음으로 Java에서 솔루션을 구현합니다. 첫 번째 해결책은 간단한 무차별 암호 대입 공격이 될 것입니다.

두 번째는 댄스 링크 기술을 활용합니다. 유효한 게임은 모든 행, 모든 열 및 모든 지역에 숫자 1에서 9까지 있습니다. 또한 하나의 솔루션만 존재해야 합니다. 이를 위해 열려 있는 모든 필드에 첫 번째 유효한 값이 채워져 있습니다. 솔루션을 찾은 후에도 열려 있는 필드에 다음 유효한 값을 배치하여 검색이 계속됩니다. 두 번째 솔루션이 발견되면 검색이 중지되고 메서드가 false로 반환됩니다. 항상 하나 이상의 솔루션이 있을 것이므로 (따라서 게임은 불완전한 솔루션입니다), 두 개 미만의 솔루션이있는 경우 게임이 유효하고 메서드가 true를 반환합니다. 단계별로: 각 행, 열 및 사각형의 모든 숫자의 합계를 확인하면 어떻게 됩니지? 여기에 가정은 보드가 모든 int 0에서 9로 채워진다는 것입니다. 0은 공백을 의미합니다. 공개 정적 부울은 유효합니다(int 보드[]]) { 부울 결과 = 거짓; // 확인 열 (int i = 0; i < 9; i++) { int 합계 = 0; (int j = 0; j<9; j++) { 합계 += 보드[j][i]; } 경우 (합계 =45) { 결과 = true; } 다른 {return false; } / / / / / / / / 확인 행 9; i++) { int 합계 = 0; (int j = 0; j < 9; j+++) { 합계 += 보드[i][j]; } 경우 (합계 == 45) { 결과 = true; } 다른 {반환 거짓; } } // 체크 사각형 (int i = 0; i < 9; i +3) { int 합계 = 0; (int ii = i; ii++ ) {에 대한 (int ii = i; ii++ ) {에 대한 (int i = 45) {에 대한 = j; jj < j + 3; jj++) { 합계 += 보드[ii][jj]; } } if (합계 == 45) { 결과 = true; } { false 반환; } } } 반환 결과; } 이 튜토리얼을 기다리고, 왜 직접 안드로이드 장치에 스도쿠에서 재생되지? 당신은 구글 플레이 스토어에서 무료로이 스도쿠 안드로이드 응용 프로그램을 시도 할 수 있습니다 : 시간 복잡성은 M이 채울 공백의 수를 나타내는 O (9 ^ m)입니다.

 

Comments are closed.

Set your Twitter account name in your settings to use the TwitterBar Section.