八皇后:八皇后的意思是在一个八乘八的格子中,每一行都只能放一个皇后,并且在这个皇后的同一行、同一列以及斜方向上都不可以有另一个皇后。
红色格子表示皇后,线表示不能有另外的皇后的格子。
在往下放皇后的时候,若不能再放了,就将上一格的皇后删掉在换个地方,直到八个皇后都可以放下为止。
class EightQueen{
//n皇后如何处理?n>=4
public static int count=0;
public static int n;
public static void main(String[] args){
n=8;
int[][] board=new int[n][n];
//0就是空 1就是皇后
eightQueen(board,0);
}
//解决board在第level层的八皇后问题 level 0~7
public static void eightQueen(int[][] board,int level){
if(level==n){ //如果递归到了第9行 则当前是一个解
count++;
System.out.printf("这是第%d个解:\n",count);
for(int i=0;i=0;r--){
if(board[r][y]==1){
return false;
}
}
//左上
for(int r=x-1,c=y-1;r>=0&&c>=0;r--,c--){
if(board[r][c]==1){
return false;
}
}
//右上
for(int r=x-1,c=y+1;r>=0&&c