回溯算法
八皇后问题(java):
public class EightRoyal{ static int[] result = new int[8]; public static void calresult(int row){ if(row == 8){ print_result(result); return; } for(int col = 0; col < 8; col++){ if(is_ok(row, col)) { result[row] = col; calresult(row + 1); } } } public static boolean is_ok(int row, int col){ int left = col - 1; int right = col + 1; for(int i = row - 1; i >= 0; i--){ if(result[i] == col){ return false; } if(left >= 0){ if(result[i] == left){ return false; } } if(right < 8){ if(result[i] == right){ return false; } } left--; right++; } return true; } public static void print_result(int result[]){ for(int row = 0; row < 8; row++){ for(int col = 0; col < 8; col++){ if(result[row] == col){ System.out.print("Q "); } else{ System.out.print("* "); } } System.out.println(); } System.out.println(); } public static void main(String[] argv){ calresult(0); } }