标签:
public class Queue_8 {
public int size = 4;
//queue i can locate at (i,loc[i])
public int loc[] = new int[size+1];
// 求第k个元素,放置的位置, 与已经放过的皇后比较,如果它们在同一行或一列,或者在一条斜线上(斜线是根据横坐标和纵坐标的差值比较,如果在一条斜线上,横坐标差值就会等于纵坐标差值)
public boolean place(int k){
int i;
for(i=1;i<k;i++){
if(Math.abs(k-i) == Math.abs(loc[k]-loc[i]) || loc[i] == loc[k]){
return false;
}
}
return true;
}
public void tracking(int t){
int i;
if(t > size){
// 表示一次遍历结束,输出结果
for(i=1;i<size+1;i++){
System.out.print(loc[i]+" ");
}
System.out.println("");
//一次探索结束,返回到track(t)的位置,继续track(loc[t-1]+1)的位置是否符合要求
}
else{
for(i=1;i<size+1;i++){
loc[t] = i;
//如果loc[t][i]可以放皇后,则继续探索t+1列
if(place(t)){
tracking(t+1);
}
}
}
}
public static void main(String args[]){
Queue_8 q = new Queue_8();
//从第1位开始
q.tracking(1);
}
}
标签:
原文地址:http://www.cnblogs.com/zxahu/p/4682119.html