八皇后

八皇后:八皇后的意思是在一个八乘八的格子中,每一行都只能放一个皇后,并且在这个皇后的同一行、同一列以及斜方向上都不可以有另一个皇后。

八皇后_第1张图片

红色格子表示皇后,线表示不能有另外的皇后的格子。

在往下放皇后的时候,若不能再放了,就将上一格的皇后删掉在换个地方,直到八个皇后都可以放下为止。

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

 

你可能感兴趣的:(八皇后)