N皇后问题
N皇后问题是值在N*N的棋盘上要摆N个皇后
要求任何两个皇后不同行,不同列,也不在同一条斜线上
返回摆法的种类
限制行,让每一行只能摆一个元素
用一个数组来表示放的位置,record[0...i-1]
比如record[0]=7代表0行的元素放在了7列,也就是说下标表示行,值表示列
当到达终止行时返回,
如果没有到终止位置假设当前在第i行,
递归尝试所有的列
如果可以摆的话就继续递归,如果不是,则认为无效
怎么验证可以摆哪?
public static int num(int n) {
if(n<1) return 0;
int []record=new int[n];
return process1(0,record,n);
}
//n表示结束位置
//record[0..i-1]表示之前的行,放了皇后的位置
//i是多少行
public static int process1(int i,int []record,int n) {
if(i==n) return 1;//终结行
//没到终结位置,还有皇后要摆
int res=0;
for(int j=0;j
结果:92



