N皇后问题是指在N*N的棋盘上摆N个皇后
要求任何两个皇后不同行,不同列,也不在同一条斜线上,
给定一个正数n,返回n皇后的摆法有多少种。
代码:
public class Class1 {
public static void main(String[] args) {
int num = 14;
int[] values = new int[num];
int i1 = process1(0, values, num);
System.out.println("i1 = " + i1);
}
private static int process1(int position,int[] values,int num){
if(position == num){
return 1;
}
int result = 0;
for(int j=0;j<num;j++){
if(valid(values,position,j)){
values[position] = j;
result += process1(position+1,values,num);
}
}
return result;
}
private static boolean valid(int[] values,int position,int j){
for (int i = 0; i < position; i++) {
if(j==values[i] || Math.abs(position-i) == Math.abs(j-values[i])){
return false;
}
}
return true;
}
}