【递归】
public class Solution {
int n;
int[] res;
//res数组下标表示第几行,value表示第几列
public void start(int n){
this.n=n;
this.res=new int[n];
print(0);
}
public void print(int k){
if(k==n){
for (int res_n:res) {
System.out.print(res_n+" ");
}
System.out.println();
}else {
for(int i=0;i<n;i++){
res[k]=i;
if(flag(k))
print(k+1);
}
}
}
//判断第i个位置是否冲突
public boolean flag(int k){
for (int i=0;i<k;i++){
if(res[i]==res[k]||Math.abs(k-i)==Math.abs(res[i]-res[k]))
return false;
}
return true;
}