- 八皇后
// row: 操作的当前行, columns:每一行存放的列信息(columns[i]=j表示第i行存放在第j列上)
public static void eightQueen(int row, int[] columns){
if(row == 8){
System.out.print(++count + "th:");
for(int i = 0; i < 8; i++){
System.out.print(columns[i] + 1);
}
System.out.println();
}else{
for(int i = 0; i < 8; i ++){ // 测试当前row这行的每一列的可行性
columns[row] = i; // 表示row这行放在第i列的位置上
int ii;
for(ii = 0; ii < row; ii++){ // 当row这行放在第i列时,判断从第0~row-1行的已放皇后是否与对这个位置上的皇后有攻击
if(columns[ii] == columns[row] || columns[ii] - columns[row] == ii - row || columns[ii] - columns[row] == row - ii){
break;
}
}
if(ii == row){
eightQueen(row + 1, columns);
}
}
}
}