import java.util.Scanner;
/** * Created by m1786 on 2017/4/1. */
public class 八皇后 {
static int nnn=8;
static int sum=0;
static int x[][]=new int[nnn][nnn];
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
backtrace(0);
System.out.println(sum);
}
static void backtrace(int t){
if(t>=nnn){
sum++;
for(int i=0;i<nnn;i++){
for(int j=0;j<nnn;j++)
System.out.print(x[i][j]+" ");
System.out.println();
}
}
else{
for(int j=0;j<nnn;j++)
if(check(t,j)){
x[t][j]=1;
backtrace(t+1);
x[t][j]=0;
}
}
}
static boolean check(int m,int n){
for(int i=0;i<m;i++){
if(x[i][n]==1)
return false;
}
for(int i=0;i<n;i++){
if(x[m][i]==1)
return false;
}
for(int i=0;i<m;i++)
for(int j=0;j<n;j++){
if(x[i][j]==1&&Math.abs(m-i)==Math.abs(n-j))
return false;
}
for(int i=0;i<m;i++)
for(int j=nnn-1;j>n;j--){
if(x[i][j]==1&&Math.abs(m-i)==Math.abs(n-j))
return false;
}
return true;
}
}
八皇后(二维数组回溯法实现)
原文作者:回溯法
原文地址: https://blog.csdn.net/feuiferisfdf/article/details/68947915
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/feuiferisfdf/article/details/68947915
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。