/***
* 求解四皇后问题(回溯法)
* @author user
*
*/
public class hjk {
private int[][] s = new int[4][4];
private int[] arr = new int[4];
//主方法,使用递归调用
public void Queen(int i){
//四行都放上皇后之后就可以打印输出
if(i==4){
for(int m=0;m<4;m++){
for(int j=0;j<4;j++){
System.out.print(s[m][j]);
}
System.out.println();
}
return;
}
//每行的四个位置依次试放
for(int j=0;j<4;j++){
arr[i] = j;
if(place(i) ){
s[i][j] = 1;
Queen(i+1);
s[i][j] = 0;
}
}
}
//判断是否可以放
public boolean place(int place){
for(int i=0;i<place;i++){
if(arr[i]==arr[place]||Math.abs(arr[place]-arr[i])==(place-i)){
return false;
}
}
return true;
}
public static void main(String args[]){
hjk h = new hjk();
h.Queen(0);
}
}
最后会得出两个最终结果