N皇后问题

public class queen{
static int N;
public static void main(String[] args){
N=4;
new queen().queue(1);

}

public int  queue(int k){
int number = 0;
if(k>N){
number++;
System.out.print(number+":");
for(int n=1 ; n<(N+1) ; n++){
System.out.print("("+n+","+point.singleton().array[n]+")"+" ");
}
System.out.println();
return -1;
}
for(int i=1 ; i<(N+1) ; i++){//THIS VARIABLE IS THE SYMBOL OF THE COLUMN
point.singleton().array[k]=i;//THE ORDER BETWEEN THESE TWO SENTENCE CAN NOT BE CHANGED,TAKE CARE OF THE JUDGE FUNCTION
if(queen.judge(k)){
queue(k+1);
}

}
return 0;
}

public static boolean judge(int k){//THIS FUNCTION IS USED TO JUDGE THE ROW WETHER OK OR NOT
for(int i=1 ; i<k ; i++){
if((Math.abs(i-k)==(Math.abs(point.singleton().array[i]-point.singleton().array[k]))||
(point.singleton().array[i]==point.singleton().array[k]))){
return false;
}
}
return true;
}

static  class point{
private static point handle=null;
private int[] array = new int[N+1];
private static point singleton(){
if(handle == null){
handle = new point();
}
return handle;
}

private point(){
for(int i=0 ; i<array.length ; i++){
array[i]=0;
}

}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值