四皇后問題的程式碼實現(java)
/***
* 求解四皇后問題(回溯法)
* @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);
}
}
最後會得出兩個最終結果