package quene_8;
public class number {
static int a[]=new int[20];
static int n;
public static void main(String[] args) {
// n皇后问题
n=8;
backdate(n);
}
static void backdate(int n){
int k;
a[1]=0;
k=1;
while(k>0) {
a[k]=a[k]+1;
while(a[k]<=n&&check(k)==0){
a[k]=a[k]+1;
}
if(a[k]<=n)
if(k==n)
output();
else {
k=k+1;
a[k]=0;}//下一个皇后,从头开始
else
k=k-1;//回溯
}
}
static int check(int k) {
int i;
for(i=1;i<=k-1;i=i+1)
if((abs(a[i]-a[k])==abs(i-k))||(a[i]==a[k]))
return 0;
return 1;
}
private static int abs(int i) {
// TODO Auto-generated method stub
return i>0?i:-i;
}
static void output() {
int i;
for(i=1;i<=n;i=i+1)
System.out.print(a[i]+" ");
System.out.println();
}
}
回溯法——8皇后问题
最新推荐文章于 2021-05-17 22:18:00 发布