역추적 알고리즘의 8황후 문제의 해답--java 실현
2533 단어 데이터 구조와 알고리즘
더 이상 말하지 말고 코드로 바로 올라가세요.
public class Backtrack8Queens {
private static int[][] result = new int[8][8];
public static void main(String[] args) {
System.out.println("hello,world!");
calc8queens(0);
}
public static void calc8queens(int row) {
if(row == 8) {
print8queens(result);
return;
}
for(int col = 0; col < 8; ++col) {
if(check(row, col)) {
result[row][col] = 1;
calc8queens(row + 1);
result[row][col] = 0;
}
}
}
public static boolean check(int row, int col) {
int leftup = col - 1;
int rightup = col + 1;
for(int i = row - 1; i >= 0; --i) {
if(result[i][col] == 1) return false;
if(leftup >= 0 && result[i][leftup] == 1) return false;
if(rightup < 8 && result[i][rightup] == 1) return false;
--leftup;
++rightup;
}
return true;
}
public static void print8queens(int[][] result) {
for(int i = 0; i < result.length; ++i) {
for(int j = 0; j < result[0].length; ++j) {
System.out.print(String.format("%s\t", result[i][j]));
}
System.out.println();
}
System.out.println();
}
}
실행 결과는 다음과 같습니다.
hello,world!
1 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0
0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0
0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0
0 0 1 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 0
0 0 0 1 0 0 0 0
0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0
...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
두 갈래 나무의 깊이가 두루 다니다텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.